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
Microsoft Fabric'te SQL veritabanı
Mevcut SET seçenekleri hakkında bilgi döndürür.
Transact-SQL söz dizimi kuralları
Sözdizimi
@@OPTIONS
Dönüş türü
integer
Açıklamalar
Seçenekler komutun kullanımından SET veya sp_configure user options değerden gelebilir. Komutla SET yapılandırılan oturum değerleri seçenekleri sp_configure geçersiz kılar. Management Studio gibi birçok araç, set seçeneklerini otomatik olarak yapılandırır. Her kullanıcının yapılandırmayı temsil eden bir @@OPTIONS fonksiyonu vardır.
Belirli bir kullanıcı oturumu için dil ve sorgu işleme seçeneklerini bu ifadeyi kullanarak SET değiştirebilirsiniz.
@@OPTIONS sadece AÇIK veya KAPALI olarak ayarlanan seçenekleri tespit edebilir.
Fonksiyon, @@OPTIONS seçeneklerin bitmap bir parçasını döndürür, bu durum 10 tabanlı (ondalık) tam sayıya dönüştürülür. Bit ayarları, Kullanıcı Seçeneklerini Yapılandırma Sunucu Yapılandırma Seçeneği makalesindeki bir tabloda tanımlanan konumlarda saklanır.
Değeri @@OPTIONS çözmek için, döndürülen @@OPTIONS tam sayı ikili sayfaya dönüştürün ve ardından Kullanıcı Seçeneklerini Yapılandırma Sunucusu Yapılandırma Seçeneği sayfasında değerleri arayın. Örneğin, SELECT @@OPTIONS; değeri 5496döndürürse, Windows programcı hesaplayıcısını (calc.exe) kullanarak ondalık 5496 ikili sayfaya dönüştürür. Sonuç 1010101111000. En sağdaki karakterler (ikili 1, 2 ve 4) 0'dır, bu da tablodaki ilk üç öğenin yanlış olduğunu gösterir. Tabloya baktığınızda, bunların DISABLE_DEF_CNST_CHK, IMPLICIT_TRANSACTIONS, ve CURSOR_CLOSE_ON_COMMITolduğunu görebilirsiniz. Sonraki madde (ANSI_WARNINGS pozisyonda 1000 ) açık. Bit haritasında sola ve seçenekler listesinde aşağıya doğru çalışmaya devam edin. En soldaki seçenekler 0 olduğunda, tür dönüşümü ile kısaltılırlar. Bit haritası 1010101111000 aslında 001010101111000 tüm 15 seçeneği temsil etmek içindir.
Örnek C, bitmaski @@OPTIONS otomatik olarak kullanıcı seçeneklerine eşleyen bir sorgu sunar.
Örnekler
A. Değişikliklerin davranışı nasıl etkilediğinin gösterimi
Aşağıdaki örnek, iki farklı seçeneğin CONCAT_NULL_YIELDS_NULL ayarıyla birleştirme davranışındaki farkı göstermektedir.
SELECT @@OPTIONS AS OriginalOptionsValue;
SET CONCAT_NULL_YIELDS_NULL OFF;
SELECT 'abc' + NULL AS ResultWhen_OFF, @@OPTIONS AS OptionsValueWhen_OFF;
SET CONCAT_NULL_YIELDS_NULL ON;
SELECT 'abc' + NULL AS ResultWhen_ON, @@OPTIONS AS OptionsValueWhen_ON;
B. İstemci NOCOUNT ayarını test et
Aşağıdaki örnek NOCOUNT``ON , değerini @@OPTIONSbelirleyip test eder. Bu seçenek NOCOUNT``ON , etkilenen satır sayısı mesajının, bir oturumdaki her ifade için talep eden istemciye geri gönderilmesini engeller. Değeri @@OPTIONS (0x0200) olarak ayarlanmıştır 512 . Bu, NOCOUNT seçeneğini temsil eder. Bu örnek, istemci üzerinde NOCOUNT seçeneğinin etkin olup olmadığını test eder. Örneğin, bir istemci üzerindeki performans farklarını takip etmeye yardımcı olabilir.
SET NOCOUNT ON
IF @@OPTIONS & 512 > 0
RAISERROR ('Current user has SET NOCOUNT turned on.', 1, 1)
C. Bitmask'@@OPTIONS PIVOT sorgusuyla inceleme
Aşağıdaki örnek, tablo değerli yapıcılar kullanarak sayı-listesi referansı oluşturur ve ardından değerini @@OPTIONS bit operatörü ile karşılaştırır. Bir APPLY cümlesi bir karakter bitmaskesi oluşturmak için dizi birleştirme yapar, diğeri ise kullanıcı seçeneklerini Dönüştür Sunucu Yapılandırma Seçeneği'nden belgelenmiş değerlere karşı incelemek için takma adlar oluşturur.
SELECT S.Bits,
Flags.*
FROM (
SELECT optRef,
posRef,
flagCheck
FROM (
SELECT ones.n + tens.n * 10
FROM ( VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9) ) ones(n),
( VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9) ) tens(n)
) f1(powRef)
CROSS APPLY (
SELECT POWER(2, powRef)
WHERE powRef <= 16
) f2(binRef)
CROSS JOIN (
VALUES (@@OPTIONS)
) f3(optRef)
CROSS APPLY (
SELECT (optRef & binRef) / binRef
) f4(flagRef)
CROSS APPLY (
SELECT RIGHT(CONVERT(VARCHAR(2), CAST(powRef AS VARBINARY(1)), 2), 1) [posRef],
CAST(flagRef AS INT) [flagCheck]
) pref
) TP
PIVOT( MAX( flagCheck ) FOR posRef IN ( [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [A], [B], [C], [D], [E], [F] )) P
CROSS APPLY (
SELECT CONCAT ( '', [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [A], [B], [C], [D], [E], [F] ),
CONCAT ( '', [F], [E], [D], [C], [B], [A], [9], [8], [7], [6], [5], [4], [3], [2], [1], [0] )
) S (stib, Bits)
CROSS APPLY (
SELECT
CAST(P.[0] AS BIT) /* 1 */ [DISABLE_DEF_CNST_CHK] -- Controls interim or deferred constraint checking.
, CAST(P.[1] AS BIT) /* 2 */ [IMPLICIT_TRANSACTIONS] -- For dblib network library connections, controls whether a transaction is started implicitly when a statement is executed. The IMPLICIT_TRANSACTIONS setting has no effect on ODBC or OLEDB connections.
, CAST(P.[2] AS BIT) /* 4 */ [CURSOR_CLOSE_ON_COMMIT] -- Controls behavior of cursors after a commit operation has been performed.
, CAST(P.[3] AS BIT) /* 8 */ [ANSI_WARNINGS] -- Controls truncation and NULL in aggregate warnings.
, CAST(P.[4] AS BIT) /* 16 */ [ANSI_PADDING] -- Controls padding of fixed-length variables.
, CAST(P.[5] AS BIT) /* 32 */ [ANSI_NULLS] -- Controls NULL handling when using equality operators.
, CAST(P.[6] AS BIT) /* 64 */ [ARITHABORT] -- Terminates a query when an overflow or divide-by-zero error occurs during query execution.
, CAST(P.[7] AS BIT) /* 128 */ [ARITHIGNORE] -- Returns NULL when an overflow or divide-by-zero error occurs during a query.
, CAST(P.[8] AS BIT) /* 256 */ [QUOTED_IDENTIFIER] -- Differentiates between single and double quotation marks when evaluating an expression.
, CAST(P.[9] AS BIT) /* 512 */ [NOCOUNT] -- Turns off the message returned at the end of each statement that states how many rows were affected.
, CAST(P.[A] AS BIT) /* 1024 */ [ANSI_NULL_DFLT_ON] -- Alters the session's behavior to use ANSI compatibility for nullability. New columns defined without explicit nullability are defined to allow nulls.
, CAST(P.[B] AS BIT) /* 2048 */ [ANSI_NULL_DFLT_OFF] -- Alters the session's behavior not to use ANSI compatibility for nullability. New columns defined without explicit nullability do not allow nulls.
, CAST(P.[C] AS BIT) /* 4096 */ [CONCAT_NULL_YIELDS_NULL] -- Returns NULL when concatenating a NULL value with a string.
, CAST(P.[D] AS BIT) /* 8192 */ [NUMERIC_ROUNDABORT] -- Generates an error when a loss of precision occurs in an expression.
, CAST(P.[E] AS BIT) /* 16384 */ [XACT_ABORT] -- Rolls back a transaction if a Transact-SQL statement raises a run-time error.*/
) AS Flags;
D. Review @@OPTIONS bitmask with GET_BIT
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Aşağıdaki örnek, her belirli bitin değerini @@OPTIONSalmak için GET_BIT fonksiyonunu kullanır.
SELECT
GET_BIT(@@OPTIONS, 0) /* 1 */ AS [DISABLE_DEF_CNST_CHK] -- Controls interim or deferred constraint checking.
, GET_BIT(@@OPTIONS, 1) /* 2 */ AS [IMPLICIT_TRANSACTIONS] -- For dblib network library connections, controls whether a transaction is started implicitly when a statement is executed. The IMPLICIT_TRANSACTIONS setting has no effect on ODBC or OLEDB connections.
, GET_BIT(@@OPTIONS, 2) /* 4 */ AS [CURSOR_CLOSE_ON_COMMIT] -- Controls behavior of cursors after a commit operation has been performed.
, GET_BIT(@@OPTIONS, 3) /* 8 */ AS [ANSI_WARNINGS] -- Controls truncation and NULL in aggregate warnings.
, GET_BIT(@@OPTIONS, 4) /* 16 */ AS [ANSI_PADDING] -- Controls padding of fixed-length variables.
, GET_BIT(@@OPTIONS, 5) /* 32 */ AS [ANSI_NULLS] -- Controls NULL handling when using equality operators.
, GET_BIT(@@OPTIONS, 6) /* 64 */ AS [ARITHABORT] -- Terminates a query when an overflow or divide-by-zero error occurs during query execution.
, GET_BIT(@@OPTIONS, 7) /* 128 */ AS [ARITHIGNORE] -- Returns NULL when an overflow or divide-by-zero error occurs during a query.
, GET_BIT(@@OPTIONS, 8) /* 256 */ AS [QUOTED_IDENTIFIER] -- Differentiates between single and double quotation marks when evaluating an expression.
, GET_BIT(@@OPTIONS, 9) /* 512 */ AS [NOCOUNT] -- Turns off the message returned at the end of each statement that states how many rows were affected.
, GET_BIT(@@OPTIONS, 10) /* 1024 */ AS [ANSI_NULL_DFLT_ON] -- Alters the session's behavior to use ANSI compatibility for nullability. New columns defined without explicit nullability are defined to allow nulls.
, GET_BIT(@@OPTIONS, 11) /* 2048 */ AS [ANSI_NULL_DFLT_OFF] -- Alters the session's behavior not to use ANSI compatibility for nullability. New columns defined without explicit nullability do not allow nulls.
, GET_BIT(@@OPTIONS, 12) /* 4096 */ AS [CONCAT_NULL_YIELDS_NULL] -- Returns NULL when concatenating a NULL value with a string.
, GET_BIT(@@OPTIONS, 13) /* 8192 */ AS [NUMERIC_ROUNDABORT] -- Generates an error when a loss of precision occurs in an expression.
, GET_BIT(@@OPTIONS, 14) /* 16384 */ AS [XACT_ABORT] -- Rolls back a transaction if a Transact-SQL statement raises a run-time error.*/
GO