Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Returnerar information om de nuvarande SET-alternativen.
Transact-SQL syntaxkonventioner
Syntax
@@OPTIONS
Returtyp
heltal
Anmärkningar
Alternativen kan komma från användningen av kommandot SET eller från sp_configure user options värdet. Sessionsvärden konfigurerade med kommandot SET åsidosätter alternativen sp_configure . Många verktyg, såsom Management Studio, konfigurerar automatiskt setinställningar. Varje användare har en @@OPTIONS funktion som representerar konfigurationen.
Du kan ändra språk- och frågebehandlingsalternativen för en specifik användarsession genom att använda satsen SET .
@@OPTIONS kan bara upptäcka de alternativ som är inställda på PÅ eller AV.
Funktionen @@OPTIONS returnerar en bitmap av alternativen, omvandlad till ett heltal med bas 10 (decimal). Bitinställningarna lagras på de platser som beskrivs i en tabell i artikeln Konfigurera användaralternativen Serverkonfigurationsalternativ.
För att avkoda värdet @@OPTIONS , konvertera heltal som returneras av @@OPTIONS till binärt och slå sedan upp värdena i tabellen under Konfigurera användaralternativen Serverkonfigurationsalternativ. Till exempel, om returnerar SELECT @@OPTIONS; värdet 5496, använd Windows programmerarkalkylator (calc.exe) för att konvertera decimal 5496 till binär. Resultatet är 1010101111000. De högra tecknen (binära 1, 2 och 4) är 0, vilket indikerar att de tre första punkterna i tabellen är fel. När man konsulterar tabellen ser man att dessa är DISABLE_DEF_CNST_CHK, IMPLICIT_TRANSACTIONS, och CURSOR_CLOSE_ON_COMMIT. Nästa punkt (ANSI_WARNINGS i positionen 1000 ) är på. Fortsätt arbeta vänster genom bitmapen och ner i listan med alternativ. När de vänstra alternativen är 0, trunkeras de av typkonverteringen. Bitmappningen 1010101111000 är faktiskt 001010101111000 till för att representera alla 15 alternativ.
Exempel C tillhandahåller en fråga som automatiskt mappar bitmasken @@OPTIONS till användaralternativ.
Examples
A. Demonstration av hur förändringar påverkar beteende
Följande exempel visar skillnaden i sammanfogningsbeteende med två olika inställningar av alternativet CONCAT_NULL_YIELDS_NULL .
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. Testa en klient-NOCOUNT-inställning
Följande exempel sätter NOCOUNT``ON och testar sedan värdet av @@OPTIONS. Alternativet NOCOUNT``ON förhindrar att meddelandet om antalet berörda rader skickas tillbaka till den begärande klienten för varje sats i en session. Värdet av @@OPTIONS sätts till 512 (0x0200). Detta representerar NOCOUNT-alternativet. Detta exempel testar om NOCOUNT-alternativet är aktiverat i klienten. Till exempel kan det hjälpa till att följa skillnader i prestanda hos en klient.
SET NOCOUNT ON
IF @@OPTIONS & 512 > 0
RAISERROR ('Current user has SET NOCOUNT turned on.', 1, 1)
C. Granska @@OPTIONS bitmask med en PIVOT-fråga
Följande exempel använder tabellvärda konstruktorer för att generera en referens för tallistor och jämför sedan värdet av @@OPTIONS med en bitvis operator. En APPLY-klausul utför strängsammansättning för att generera en teckenbitmask, och en annan genererar alias för att granska mot de dokumenterade värdena från Configure the user options Server Configuration Option.
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. Granska @@OPTIONS bitmask med GET_BIT
gäller för: SQL Server 2022 (16.x) och senare versioner.
Följande exempel använder funktionen GET_BIT för att hämta värdet från varje specifik bit i @@OPTIONS.
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