Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure 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.
DECLARE @local_variable (Transact-SQL) In-Memory OLTP için tüm Desteklenen Veri Türlerini ve bellek için iyileştirilmiş tablo türlerini kullanabilir. Değişkenler NULL veya NOT NULL olarak bildirilebilir.
DENEYIN... CATCH (Transact-SQL)
- En iyi performansı elde etmek için, yerel olarak derlenmiş T-SQL modülünün tamamı için tek bir TRY/CATCH bloğu kullanın.
BEGIN ATOMIC (saklı yordamın dış seviyesinde). Daha fazla ayrıntı için bkz . Atomik Bloklar.
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.
-
Şunlar için geçerlidir: SQL Server 2017 (14.x).
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.
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.
-
Şunlar için geçerlidir: SQL Server 2017 (14.x).
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.
-
Şunlar için geçerlidir: SQL Server 2017 (14.x).
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:
İNDİS, FORCESCAN ve FORCESEEK ipuçları, tablo ipuçları söz diziminde veya sorgunun OPTION Yan Tümcesinde (Transact-SQL). Daha fazla bilgi için bkz. Tablo İpuçları (Transact-SQL).
ZORLA DÜZEN
LOOP JOIN ipucu
EN İYI DURUMA GETIRME
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ı