Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Informação de devolução sobre as opções atuais do SET.
Transact-SQL convenções de sintaxe
Sintaxe
@@OPTIONS
Tipo de retorno
integer
Observações
As opções podem vir do uso do SET comando ou do sp_configure user options valor. Os valores da sessão configurados com o SET comando sobrepõem-se às sp_configure opções. Muitas ferramentas, como o Management Studio, configuram automaticamente opções de conjunto. Cada utilizador tem uma @@OPTIONS função que representa a configuração.
Pode alterar a linguagem e as opções de processamento de consultas para uma sessão de utilizador específica usando a SET instrução.
@@OPTIONS Só consegue detetar as opções que estão definidas como LIGADO ou DESLIGADO.
A @@OPTIONS função devolve um bitmap das opções, convertido para um inteiro em base 10 (decimal). As definições de bits são armazenadas nas localizações descritas numa tabela no artigo Configurar as opções de utilizador Opção de Configuração do Servidor.
Para decodificar o @@OPTIONS valor, converta o inteiro devolvido @@OPTIONS para binário e depois procure os valores na tabela em Configurar as opções de utilizador Opção de Configuração do Servidor. Por exemplo, se SELECT @@OPTIONS; devolver o valor 5496, use a calculadora do programador do Windows (calc.exe) para converter decimal 5496 para binário. O resultado é 1010101111000. Os caracteres mais à direita (binários 1, 2 e 4) são 0, indicando que os três primeiros itens da tabela estão errados. Consultando a tabela, vê-se que esses são DISABLE_DEF_CNST_CHK, IMPLICIT_TRANSACTIONS, e CURSOR_CLOSE_ON_COMMIT. O próximo item (ANSI_WARNINGS na 1000 posição) está ligado. Continue a trabalhar para a esquerda através do mapa de bits e para baixo na lista de opções. Quando as opções mais à esquerda são 0, são truncadas pela conversão de tipo. O mapa 1010101111000 de bits serve na verdade 001010101111000 para representar as 15 opções.
O exemplo C fornece uma consulta que automaticamente mapeia a @@OPTIONS máscara de bits para as opções do utilizador.
Examples
A. Demonstração de como as mudanças afetam o comportamento
O exemplo seguinte demonstra a diferença no comportamento de concatenação com duas definições diferentes da CONCAT_NULL_YIELDS_NULL opção.
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. Teste uma definição de NOCOUNT de cliente
O exemplo seguinte define NOCOUNT``ON e depois testa o valor de @@OPTIONS. A NOCOUNT``ON opção impede que a mensagem sobre o número de linhas afetadas seja enviada de volta ao cliente solicitante para cada instrução numa sessão. O valor de @@OPTIONS é definido como 512 (0x0200). Isto representa a opção NOCOUNT. Este exemplo testa se a opção NOCOUNT está ativada no cliente. Por exemplo, pode ajudar a acompanhar diferenças de desempenho num cliente.
SET NOCOUNT ON
IF @@OPTIONS & 512 > 0
RAISERROR ('Current user has SET NOCOUNT turned on.', 1, 1)
C. Revê @@OPTIONS bitmask com uma consulta PIVOT
O exemplo seguinte utiliza construtores com valores de tabela para gerar uma referência de lista numérica e depois compara o valor de @@OPTIONS com um operador bit a bit. Uma cláusula APPLY realiza concatenação de strings para gerar uma máscara de bits de caracteres, e outra gera aliases para rever com os valores documentados de 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. Análise @@OPTIONS Bitmask com GET_BIT
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores.
O exemplo seguinte usa a função GET_BIT para obter o valor de cada bit específico em @@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