Aracılığıyla paylaş


Yerel Olarak Derlenmiş T-SQL Modülleri için Desteklenen Özellikler

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Bu konu, T-SQL yüzey alanının ve saklı yordamlar (CREATE PROCEDURE (Transact-SQL)), skaler kullanıcı tanımlı işlevler, satır içi tablo değerli işlevler ve tetikleyiciler gibi yerel olarak derlenen T-SQL modülleri gövdesinde desteklenen özelliklerin bir listesini içerir.

Yerel modüllerin tanımıyla ilgili desteklenen özellikler için bkz. Yerel Olarak Derlenmiş T-SQL modülleri için desteklenen DDL.

Desteklenmeyen yapılar hakkında tam bilgi edinmek ve yerel olarak derlenmiş modüllerde desteklenmeyen bazı özelliklere geçici çözüm bulma hakkında bilgi için bkz. Yerel Olarak Derlenmiş Saklı Yordamlar için Geçiş Sorunları. Desteklenmeyen özellikler hakkında daha fazla bilgi için bkz. Transact-SQL In-Memory OLTP tarafından Desteklenmeyen Yapılar.

Yerel Modüllerde Surface Alanını Sorgulama

Aşağıdaki sorgu yapıları desteklenir:

CASE ifadesi: CASE, geçerli bir ifadeye izin veren herhangi bir deyim veya yan tümcede kullanılabilir.

  • Şunlar için geçerlidir: SQL Server 2017 (14.x).
    SQL Server 2017 'den (14.x) başlayarak, CASE deyimleri artık yerel olarak derlenmiş T-SQL modülleri için desteklenmektedir.

"SELECT" yan tümcesi:

  • Sütunlar ve isim takma adları (AS veya = kullanılarak).

  • Skaler alt sorgular

    • Şunlar için geçerlidir: SQL Server 2016 (13.x). SQL Server 2016(13.x) sürümünden başlayarak skaler alt sorgular artık yerel olarak derlenmiş modüllerde desteklenmektedir.
  • Sayfa Üstü

  • AYRı SEÇ

    • Şunlar için geçerlidir: SQL Server 2016 (13.x). SQL Server 2016 (13.x) sürümünden başlayarak DISTINCT işleci yerel olarak derlenmiş modüllerde desteklenir.

      • DISTINCT toplama işlemleri desteklenmez.
  • UNION ve UNION ALL

    • Şunlar için geçerlidir: SQL Server 2016 (13.x). SQL Server 2016 (13.x) sürümünden başlayarak UNION ve UNION ALL işleçleri artık yerel olarak derlenmiş modüllerde desteklenmektedir.
  • Değişken atamaları

FROM ifadesi

  • FROM <bellek için optimize edilmiş tablo veya tablo değişkeni>

  • FROM <yerel olarak derlenmiş satır içi TVF>

  • SOL DıŞ BIRLEŞIM, SAĞ DıŞ BIRLEŞIM, ÇAPRAZ BIRLEŞTIRME VE İÇ BIRLEŞIM.

    • Şunlar için geçerlidir: SQL Server 2016 (13.x). SQL Server 2016(13.x) sürümünden itibaren JOINS artık yerel olarak derlenmiş modüllerde desteklenmektedir.
  • Alt Sorgular [AS] table_alias. Daha fazla bilgi için bkz. from (Transact-SQL) .

    • Şunlar için geçerlidir: SQL Server 2016 (13.x). SQL Server 2016(13.x) sürümünden başlayarak, alt sorgular artık yerel olarak derlenmiş modüllerde desteklenmektedir.

WHERE maddesi:

  • Filtre koşulu IS [NOT] NULL

  • VE, ARASINDA

  • VEYA, YOK, IN, VAR

    • Şunlar için geçerlidir: SQL Server 2016 (13.x). SQL Server 2016(13.x) sürümünden başlayarak, OR/NOT/IN/EXISTS işleçleri artık yerel olarak derlenmiş modüllerde desteklenmektedir.

GROUP BY yan tümcesi:

  • AVG, COUNT, COUNT_BIG, MIN, MAX ve SUM işlevlerini toplama.

  • Nvarchar, char, varchar, varchar, varbinary ve binary türleri için MIN ve MAX desteklenmez.

ORDER BY yan tümcesi:

  • ORDER BY yan tümcesinde DISTINCT desteği yoktur.

  • ORDER BY listesindeki bir ifade GROUP BY listesinde tam olarak görünüyorsa GROUP BY (Transact-SQL) ile desteklenir.

    • Örneğin, GROUP BY a + b ORDER BY a + b desteklenir, ancak GROUP BY a, b ORDER BY a + b desteklenmez.

HAVING maddesi:

  • WHERE yan tümcesi ile aynı ifade sınırlamalarına tabidir.

ORDER BY ve TOP, bazı kısıtlamalarla yerel olarak derlenmiş modüllerde desteklenir

  • WITH TIES veya PERCENT desteği TOP yan tümcesinde yoktur.

  • ORDER BY yan tümcesinde DISTINCT desteği yoktur.

  • ORDER BY ile birleştirilen TOP, TOP yan tümcesinde sabit kullanılırken 8.192'den fazlasını desteklemez.

    • Sorgu birleştirme veya toplama işlevleri içeriyorsa bu sınır azaltılabilir. (Örneğin, bir birleştirme (iki tablo) ile sınır 4.096 satırdır. İki birleşim (üç tablo) ile sınır 2.730 satırdır.)
    • Satır sayısını bir değişkende depolayarak 8.192'den büyük sonuçlar elde edebilirsiniz:
DECLARE @v INT = 9000;
SELECT TOP (@v) ... FROM ... ORDER BY ...

Ancak TOP yan tümcesindeki bir sabit, değişken kullanımına kıyasla daha iyi performansa neden olur.

Bellek ile optimize edilmiş tablolarda yorumlanmış Transact-SQL erişimine, yerel olarak derlenmiş Transact-SQL'e uygulanan kısıtlamalar geçerli değildir.

Veri Değişikliği

Aşağıdaki DML deyimleri desteklenir.

  • INSERT VALUES (ifade başına bir satır) ve INSERT ... SELECT

  • Güncelleme

  • DELETE

  • WHERE, UPDATE ve DELETE deyimleriyle desteklenir.

Akış Kontrolü Dili

Aşağıdaki akış denetimi dil yapıları desteklenir.

Desteklenen İşleçler

Aşağıdaki işleçler desteklenir.

  • Karşılaştırma İşleçleri (Transact-SQL) (örneğin, >, <, >=ve <=)

  • Tekli operatörler (+, -).

  • İkili işleçler (*, /, +, -, % (modulo)).

    • Artı işleci (+) hem sayılarda hem de dizelerde desteklenir.
  • Mantıksal işleçler (AND, OR, NOT).

  • Bit düzeyinde işleçler ~, &, | ve ^

  • APPLY işleci

    • Şunlar için geçerlidir: SQL Server 2017 (14.x).
      SQL Server 2017 (14.x) sürümünden başlayarak APPLY işleci yerel olarak derlenmiş modüllerde desteklenir.

Yerel Olarak Derlenmiş Modüllerde Yerleşik İşlevler

Aşağıdaki işlevler bellek için iyileştirilmiş tablolardaki kısıtlamalarda ve yerel olarak derlenmiş T-SQL modüllerinde desteklenir.

  • Tüm Matematiksel İşlevler (Transact-SQL)

  • Tarih işlevleri: CURRENT_TIMESTAMP, DATEADD, DATEDIFF, DATEFROMPARTS, DATEPART, DATETIME2FROMPARTS, DATETIMEFROMPARTS, DAY, EOMONTH, GETDATE, GETUTCDATE, MONTH, SMALLDATETIMEFROMPARTS, SYSDATETIME, SYSUTCDATETIME ve YEAR.

  • Dize işlevleri: LEN, LTRIM, RTRIM ve SUBSTRING.

    • Şunlar için geçerlidir: SQL Server 2017 (14.x).
      SQL Server 2017 (14.x) sürümünden başlayarak aşağıdaki yerleşik işlevler de desteklenir: TRIM, ÇEVİR ve CONCAT_WS.
  • Kimlik işlevleri: SCOPE_IDENTITY

  • NULL işlevleri: ISNULL

  • Uniqueidentifier işlevleri: NEWID ve NEWSEQUENTIALID

  • JSON işlevleri

    • Şunlar için geçerlidir: SQL Server 2017 (14.x).
      SQL Server 2017 (14.x) sürümünden başlayarak JSON işlevleri yerel olarak derlenmiş modüllerde desteklenir.
  • Hata işlevleri: ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY ve ERROR_STATE

  • Sistem İşlevleri: @@rowcount. Yerel olarak derlenmiş saklı yordamların içindeki deyimler @@rowcount güncelleştirir ve yerel olarak derlenmiş saklı yordam içinde yürütülen son deyimden etkilenen satır sayısını belirlemek için yerel olarak derlenmiş bir saklı yordamda @@rowcount kullanabilirsiniz. Ancak, @@rowcount yerel olarak derlenmiş bir saklı yordamın yürütülmesinin başlangıcında ve sonunda 0'a sıfırlanır.

  • Güvenlik işlevleri: IS_MEMBER({'group' | 'role'}), IS_ROLEMEMBER ('role' [, 'database_principal']), IS_SRVROLEMEMBER ('role' [, 'login']), ORIGINAL_LOGIN(), SESSION_USER, CURRENT_USER, SUSER_ID(['login']), SUSER_SID(['login'] [, Param2]), SUSER_SNAME([server_user_sid]), SYSTEM_USER, SUSER_NAME, USER, USER_ID(['user']), USER_NAME([id]), CONTEXT_INFO().

  • Yerel modüllerin çalıştırılması iç içe geçebilir.

Auditing

Prosedür düzeyinde denetim, doğrudan derlenen saklı yordamlar içinde desteklenir.

Denetim hakkında daha fazla bilgi için bkz . Sunucu Denetimi ve Veritabanı Denetim Belirtimi Oluşturma.

Tablo ve Sorgu İpuçları

Aşağıdakiler desteklenir:

Daha fazla bilgi için bkz. Sorgu İpuçları (Transact-SQL).

Sıralama sınırlamaları

TOP (Transact-SQL) ve ORDER BY Yan Tümcesi (Transact-SQL) kullanan bir sorguda 8.000'den fazla satır sıralayabilirsiniz. Ancak ORDER BY Yan Tümcesi (Transact-SQL) olmadan , TOP (Transact-SQL) en fazla 8.000 satır (birleştirme varsa daha az satır) sıralayabilir.

Sorgunuz hem TOP (Transact-SQL) işlecini hem de ORDER BY Yan Tümcesi (Transact-SQL) kullanıyorsa, TOP işleci için en fazla 8192 satır belirtebilirsiniz. 8192'den fazla satır belirtirseniz şu hata iletisini alırsınız: Msg 41398, Düzey 16, State 1, Procedure< procedureName>, Line lineNumber<> TOP işleci en fazla 8192 satır döndürebilir; <numarası> istendi.

TOP yan tümceniz yoksa ORDER BY ile istediğiniz sayıda satırı sıralayabilirsiniz.

ORDER BY yan tümcesi kullanmıyorsanız TOP işleciyle herhangi bir tamsayı değeri kullanabilirsiniz.

TOP N = 8192 örneği: Derlemeler

CREATE PROCEDURE testTop  
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION  
  AS  
  BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')  
    SELECT TOP 8192 ShoppingCartId, CreatedDate, TotalPrice FROM dbo.ShoppingCart  
    ORDER BY ShoppingCartId DESC  
  END;  
GO  

TOP N > 8192 örneği: Derleme başarısız oluyor.

CREATE PROCEDURE testTop  
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION  
  AS  
  BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')  
    SELECT TOP 8193 ShoppingCartId, CreatedDate, TotalPrice FROM dbo.ShoppingCart  
    ORDER BY ShoppingCartId DESC  
  END;  
GO  

Yalnızca TOP N bulunduğunda ve N sabit olduğunda, önceki örneklerde olduğu gibi, 8192 satır sınırlaması geçerlidir. Eğer N 8192'den büyük bir değere ihtiyacınız varsa, değeri bir değişkene atayabilir ve bu değişkeni TOP ile kullanabilirsiniz.

Değişken kullanma örneği: Derlemeler

CREATE PROCEDURE testTop  
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION  
  AS  
  BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')  
    DECLARE @v int = 8193   
    SELECT TOP (@v) ShoppingCartId, CreatedDate, TotalPrice FROM dbo.ShoppingCart  
    ORDER BY ShoppingCartId DESC  
  END;  
GO  

Döndürülen satırlarla ilgili sınırlamalar: TOP işleci tarafından döndürülebilecek satır sayısını azaltabilecek iki durum vardır:

  • Sorguda JOIN'leri kullanma. JOIN'lerin sınırlama üzerindeki etkisi sorgu planına bağlıdır.

  • ORDER BY yan tümcesinde toplama işlevlerini veya toplama işlevlerine referansları kullanma.

TOP N'de desteklenen en kötü durum üst sınırı olan N'yi hesaplamak için formül: N = floor ( 65536 / number_of_tables * 8 + total_size+of+aggs ).

Ayrıca Bkz.

Yerel Olarak Derlenmiş Saklı Yordamlar
Yerel Olarak Derlenmiş Saklı Yordamlar için Geçiş Sorunları