Compartilhar via


Instruções SET (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Ponto de extremidade de análise de SQL no Microsoft FabricDepósito no Microsoft FabricBanco de dados SQL no Microsoft Fabric

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

Para obter informações sobre como definir variáveis locais usando uma instrução SET, confira SET @local_variable (Transact-SQL).

Categoria Instruções
Instruções de data e hora DEFINIR A DATA PRIMEIRO

FORMATFORMATO DE DATA DEFINIDO
Instruções de bloqueio CONJUNTO DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Instruções diversas SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

CONJUNTO IDENTITY_INSERT

LINGUAGEM DE CONJUNTOS

DESLOCAMENTOS DE CONJUNTO

CONJUNTO QUOTED_IDENTIFIER
Instruções de execução de consulta ARITHABORT DE CONJUNTO

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 SEM CONTAGEM

SET NOEXEC

CONJUNTO NUMERIC_ROUNDABORT

DEFINIR APENAS O JOGO

SET QUERY_GOVERNOR_COST_LIMIT

SET RESULT SET CACHING (versão prévia)
Observação: esse recurso se aplica somente ao Azure Synapse Analytics.

CONTAGEM DE LINHAS DEFINIDA

DEFINIR TEXTSIZE
Instruções de configurações ISO CONJUNTO ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

CONJUNTO ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Instruções estatísticas DEFINIR O PLANO DE FORÇAS

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

CONJUNTO SHOWPLAN_XML

ESTATÍSTICAS DO SET IO

SET STATISTICS XML

DEFINIR PERFIL DE ESTATÍSTICAS

ESTATÍSTICAS DO SET TEMPO
Instruções de transações SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

DEFINIR NÍVEL DE ISOLAMENTO DE TRANSAÇÃO

CONJUNTO XACT_ABORT

Considerações sobre quando usar instruções SET

  • Todas as instruções SET executadas no tempo de execução, exceto essas instruções, que são executadas no momento da análise:

    • SET FIPS_FLAGGER
    • DESLOCAMENTOS DE CONJUNTO
    • DEFINIR APENAS O JOGO
    • e SET QUOTED_IDENTIFIER
  • Se uma instrução SET for executada em um procedimento armazenado ou gatilho, o valor da opção SET será restaurado depois que o procedimento armazenado ou o gatilho retornar o controle. Além disso, se uma instrução SET for especificada em uma cadeia de caracteres SQL dinâmica que seja executada usando sp_executesql ou EXECUTE, o valor da opção SET será restaurado depois que o controle for retornado do lote especificado na cadeia de caracteres SQL dinâmica.

  • Os procedimentos armazenados são executados com as configurações SET especificadas no momento da execução, com exceção de SET ANSI_NULLS e SET QUOTED_IDENTIFIER. Os procedimentos armazenados que especificam que SET ANSI_NULLS ou SET QUOTED_IDENTIFIER usam a configuração especificada no momento da criação do procedimento armazenado. Se usada em um procedimento armazenado, qualquer configuração SET será 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 instrução SET explícita, a não ser que ocorra no momento de logon.

  • As configurações de banco de dados definidas usando ALTER DATABASE só são válidas em nível do banco de dados e entram em vigor apenas quando definidas explicitamente. 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 instrução SET usa ON e OFF, você pode especificar qualquer um para várias opções SET.

    Observação

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

    Por exemplo, SET QUOTED_IDENTIFIER, ANSI_NULLS ON define QUOTED_IDENTIFIER e ANSI_NULLS como ON.

  • As configurações da instrução SET substituem as configurações de opção de banco de dados idênticas que são definidas usando ALTER DATABASE. Por exemplo, o valor especificado em uma instrução SET ANSI_NULLS substituirá a configuração de banco de dados por 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.

  • As instruções ALTER, CREATE e DROP DATABASE não aceitam a configuração SET LOCK_TIMEOUT.

  • Quando uma instrução SET global ou de atalho define várias configurações, emitindo o atalho, a instrução SET redefine as configurações anteriores por todas as opções afetadas pela instrução SET de atalho. Se uma opção SET que é afetada por uma instrução SET de atalho for definida depois que a instrução SET de atalho for emitida, a instrução SET individual substituirá as configurações de atalho comparáveis. Um exemplo de uma instrução SET de atalho seria SET 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.

  • Solicitações MARS (Vários Conjuntos de Resultados Ativos) compartilham um estado global que contém as configurações de opção SET da sessão mais recente. Quando uma solicitação é executada, ela pode modificar as opções SET. 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. Entretanto, depois que a execução da solicitação é concluída, as novas opções SET são copiadas para o estado de sessão global. As novas solicitações executadas na mesma sessão depois dessa alteração usarão essas novas configurações de opção SET.

  • 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 exibições indexadas, você deve definir essas opções SET como ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING e ANSI_WARNINGS. Defina a opção NUMERIC_ROUNDABORT como OFF.

    Se não definir uma dessas opções com os valores solicitados, haverá falha nas ações INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE em exibições ou tabelas indexadas com índices em colunas computadas. 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 for ON, o recurso de armazenamento em cache de resultados estará ativado para a sessão atual do cliente. 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 for OFF, o recurso de armazenamento em cache de resultados estará 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