SET Afirmações (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBanco de dados SQL no Microsoft Fabric

A linguagem de programação Transact-SQL fornece várias SET instruções que alteram o tratamento atual da sessão de informações específicas. As SET declarações estão agrupadas nas categorias mostradas na tabela a seguir.

Para informações sobre como definir variáveis locais com a SET instrução, veja SET @local_variable (Transact-SQL).

Categoria Instruções
Instruções de data e hora SET DATEFIRST

SET DATEFORMAT
Instruções de bloqueio SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Instruções diversas SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Instruções de execução de consulta SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Observação: esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET CACHE DE RESULTADOS SET (Prévia)
Observação: esse recurso se aplica somente ao Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Instruções de configurações ISO SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Instruções estatísticas SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Instruções de transações SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Considerações ao Usar as SET Declarações

  • Todas SET as instruções rodam em tempo de execução ou execução, exceto estas, que rodam em tempo de análise sintática:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • e SET QUOTED_IDENTIFIER
  • Se uma SET instrução roda em um procedimento armazenado ou gatilho, o valor da SET opção é restaurado após o procedimento armazenado ou gatilho retornar o controle. Além disso, se você especificar uma SET instrução em uma string SQL dinâmica que roda usando sp_executesql ou EXECUTE, o valor da SET opção é restaurado após os retornos de controle do lote que você especificou na string SQL dinâmica.

  • Procedimentos armazenados são executados com as SET configurações especificadas em tempo de execução, exceto para SETSET ANSI_NULLS e SETSET QUOTED_IDENTIFIER. Procedimentos armazenados especificando SETSET ANSI_NULLS ou SETSET QUOTED_IDENTIFIER usando a configuração especificada no momento da criação do procedimento armazenado. Se usado dentro de um procedimento armazenado, qualquer SET configuração é ignorada.

  • A configuração user options de sp_configure permite configurações em todo o servidor e funciona em vários bancos de dados. Essa configuração também se comporta como uma declaração explícita SET , exceto que ocorre no momento do login.

  • Configurações de banco de dados definidas por usar ALTER DATABASE são válidas apenas no nível do banco de dados e só têm efeito se explicitamente definidas. As configurações de banco de dados substituem as configurações de opção de instância que são definidas usando sp_configure.

  • Se uma SET instrução usa ON e OFF, você pode especificar qualquer uma para múltiplas SET opções.

    Observação

    Isso não se aplica às opções relacionadas SET à estatística.

    Por exemplo, SET QUOTED_IDENTIFIER, ANSI_NULLS ON define ambos QUOTED_IDENTIFIER e ANSI_NULLS para ON.

  • SET As configurações da instrução sobrepõem as opções idênticas de banco de dados que são definidas usando ALTER DATABASE. Por exemplo, o valor especificado em uma SET ANSI_NULLS instrução irá sobrescrever a configuração do banco de dados para ANSI_NULLs. Além disso, algumas configurações de conexão são definidas automaticamente como ON quando um usuário se conecta a um banco de dados com base nos valores especificados pelo uso anterior da configuração de sp_configure user options ou dos valores que se aplicam a todas as conexões ODBC e OLE/DB.

  • ALTER, CRIAR e DROP DATABASE declarações não respeitam o SETSET LOCK_TIMEOUT cenário.

  • Quando uma instrução global ou de atalho SET define várias configurações, emitir a instrução de atalho SET redefine as configurações anteriores para todas as opções afetadas pela instrução de atalho SET . Se uma SET opção afetada por uma instrução de atalho SET for definida após a emissão da instrução de atalho SET , a instrução individual SET sobrescreve as configurações de atalho comparáveis. Um exemplo de instrução de atalho SET seria SETSET ANSI_DEFAULTS.

  • Quando lotes são usados, o contexto de banco de dados é determinado pelo lote estabelecido usando a instrução USE. Consultas não planejadas e todas as outras instruções que são executadas fora do procedimento armazenado e que estão em lotes herdam as configurações de opção do banco de dados e a conexão estabelecida pela instrução USE.

  • Múltiplas solicitações de Conjunto de Resultados Ativos (MARS) compartilham um estado global que contém as configurações mais recentes de opções de sessão SET . Quando cada requisição é executada, ela pode modificar as SET opções. As alterações são específicas do contexto de solicitação no qual elas foram definidas e não afetam outras solicitações MARS simultâneas. No entanto, após a execução da requisição, as novas SET opções são copiadas para o estado global da sessão. Novas requisições que são executadas na mesma sessão após essa mudança usarão essas novas SET configurações de opções.

  • Quando um procedimento armazenado é executado, seja de um lote ou de outro procedimento armazenado, ele é executado nos valores de opção definidos no banco de dados que contém o procedimento armazenado. Por exemplo, quando o procedimento armazenado db1.dbo.sp1 chama o procedimento armazenado db2.dbo.sp2, o procedimento armazenado sp1 é executado na configuração de nível de compatibilidade atual do banco de dados db1 e o procedimento armazenado sp2 é executado na configuração de nível de compatibilidade atual do banco de dados db2.

  • Quando uma instrução Transact-SQL se refere a objetos que residem em vários bancos de dados, o contexto de banco de dados atual e o contexto de conexão atual se aplicam a essa instrução. Nesse caso, se a instrução Transact-SQL estiver em um lote, o contexto de conexão atual será o banco de dados definido pela instrução USE; se a instrução Transact-SQL estiver em um procedimento armazenado, o contexto de conexão será o banco de dados que contém o procedimento armazenado.

  • Ao criar e manipular índices em colunas computadas ou visualizações indexadas, você deve definir essas SET opções para ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, e ANSI_WARNINGS. Defina a opção NUMERIC_ROUNDABORT como DESLIGADO.

    Se você não definir nenhuma dessas opções para os valores exigidos, INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE em visualizações indexadas ou tabelas com índices em colunas computadas falharão. O SQL Server gerará um erro que lista todas as opções definidas incorretamente. Além disso, o SQL Server processará as instruções SELECT nessas tabelas ou exibições indexadas como se os índices nas colunas computadas ou nas exibições não existissem.

  • Quando SET RESULT_SET_CACHING está ATIVADO, ele ativa o recurso de cache de resultados para a sessão cliente atual. O Result_set_caching não pode ser ATIVADO para uma sessão se estiver DESATIVADO no nível do banco de dados. Quando SET RESULT_SET_CACHING está DESLIGADO, o recurso de cache do conjunto de resultados é desativado para a sessão atual do cliente. A alteração dessa configuração requer associação na função pública. Aplica-se a: Azure Synapse Analytics Gen2