Partilhar via


Instruções SET (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

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

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

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

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

SET LOCK_TIMEOUT
Declarações diversas CONJUNTO CONCAT_NULL_YIELDS_NULL

CONJUNTO CURSOR_CLOSE_ON_COMMIT

CONJUNTO FIPS_FLAGGER

SET IDENTITY_INSERT

LINGUAGEM DE CONJUNTOS

DESLOCAMENTOS DE CONJUNTO

SET QUOTED_IDENTIFIER
Instruções de Execução de Consulta SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Nota: Esta funcionalidade será removida numa versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

NÚMERO DE CONJUNTOS

SET NOEXEC

CONJUNTO NUMERIC_ROUNDABORT

MONTAR APENAS O CENÁRIO

SET QUERY_GOVERNOR_COST_LIMIT

CONJUNTO DE RESULTADOS EM CACHE (Pré-visualização)
Nota: Esta funcionalidade aplica-se apenas ao Azure Synapse Analytics.

CONTAGEM DE LINHAS DE CONJUNTO

DEFINIR TEXTSIZE
Instruções de Definições ISO SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

CENÁRIO ANSI_NULL_DFLT_ON

SET ANSI_NULLS

CONJUNTO ANSI_PADDING

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

CONJUNTO SHOWPLAN_ALL

SET SHOWPLAN_TEXT

CONJUNTO SHOWPLAN_XML

ESTATÍSTICAS DO SET IO

CONFIGURAR ESTATÍSTICAS XML

DEFINIR PERFIL DE ESTATÍSTICAS

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

SET REMOTE_PROC_TRANSACTIONS

DEFINIR O NÍVEL DE ISOLAMENTO DE TRANSAÇÃO

SET XACT_ABORT

Considerações ao utilizar as instruções SET

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

    • CONJUNTO FIPS_FLAGGER
    • DESLOCAMENTOS DE CONJUNTO
    • DEFINIR PARSEONLY
    • e SET QUOTED_IDENTIFIER
  • Se uma instrução SET for executada num procedimento armazenado ou disparador, o valor da opção SET é restaurado após o procedimento armazenado ou o gatilho devolver o controlo. Além disso, se especificar uma instrução SET numa string SQL dinâmica que executa usando sp_executesql ou EXECUTE, o valor da opção SET é restaurado após o regresso de controlo do lote que especificou na string SQL dinâmica.

  • Os procedimentos armazenados executam-se com as definições SET especificadas no momento de execução, exceto para SET ANSI_NULLS e SET QUOTED_IDENTIFIER. Os procedimentos armazenados que especificam SET ANSI_NULLS ou SET QUOTED_IDENTIFIER usar a definição especificada no momento da criação do procedimento armazenado. Se usado dentro de um procedimento armazenado, qualquer definição de SET é ignorada.

  • A definição de opções de utilizador do sp_configure permite definições a nível de servidor e funciona em múltiplas bases de dados. Esta configuração também se comporta como uma instrução SET explícita, exceto que ocorre no momento do login.

  • As definições da base de dados definidas através do ALTER DATABASE são válidas apenas ao nível da base de dados e só têm efeito se estiverem explicitamente definidas. As definições da base de dados sobrepõem-se às opções de instância que são definidas usando sp_configure.

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

    Observação

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

    Por exemplo, SET QUOTED_IDENTIFIER, ANSI_NULLS ON define tanto QUOTED_IDENTIFIER como ANSI_NULLS para ON.

  • As definições da instrução SET sobrepõem definições idênticas de opções de base de dados que são definidas usando ALTER DATABASE. Por exemplo, o valor especificado numa instrução SET ANSI_NULLS irá sobrepor a definição da base de dados para ANSI_NULLs. Além disso, algumas definições de ligação ficam automaticamente ativadas quando um utilizador se liga a uma base de dados com base nos valores que entram em vigor pela utilização anterior da definição de opções de utilizador sp_configure , ou nos valores que se aplicam a todas as ligações ODBC e OLE/DB.

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

  • Quando uma instrução global ou atalho SET define várias definições, a emissão da instrução atalho SET reinicia as definições anteriores para todas as opções afetadas pela instrução atalho SET. Se uma opção SET que é afetada por uma instrução SET de atalho for definida após a emissão da instrução SET de atalho, a instrução SET individual sobrepõe-se às definições de atalho comparáveis. Um exemplo de atalho na instrução SET seria SET ANSI_DEFAULTS.

  • Quando são usados lotes, o contexto da base de dados é determinado pelo lote estabelecido usando a instrução USE. Consultas não planeadas e todas as outras instruções que correm fora do procedimento armazenado e que estão em lotes herdam as definições de opções da base de dados e da ligação estabelecidas pela instrução USE.

  • Múltiplos pedidos Active Result Set (MARS) partilham um estado global que contém as definições mais recentes da opção SET da sessão. Quando cada pedido é executado, pode modificar as opções SET. As alterações são específicas ao contexto de pedido em que estão definidas e não afetam outros pedidos MARS concorrentes. No entanto, após a execução do pedido, as novas opções SET são copiadas para o estado global da sessão. Novos pedidos que sejam executados na mesma sessão após esta alteração usarão estas novas definições de opção SET.

  • Quando um procedimento armazenado é executado a partir de um batch ou de outro procedimento armazenado, é executado sob os valores de opção configurados na base 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 sob a definição atual de nível de compatibilidade da base de dados db1, e o procedimento armazenado sp2 executa sob a configuração atual de nível de compatibilidade da base de dados db2.

  • Quando uma instrução Transact-SQL diz respeito a objetos que estão em múltiplas bases de dados, o contexto atual da base de dados e o contexto de ligação atual aplicam-se a essa afirmação. Neste caso, se Transact-SQL instrução estiver num lote, o contexto de ligação atual é a base de dados definida pela instrução USE; Se a instrução Transact-SQL estiver num procedimento armazenado, o contexto de ligação é a base de dados que contém o procedimento armazenado.

  • Quando está a criar e manipular índices em colunas computadas ou vistas indexadas, deve definir estas opções SET para ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING e ANSI_WARNINGS. Define a opção NUMERIC_ROUNDABORT DESLIGADO.

    Se não definir nenhuma destas opções para os valores necessários, as ações INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE em vistas indexadas ou tabelas com índices em colunas calculadas falharão. O SQL Server gera um erro listando todas as opções que estão incorretamente definidas. Além disso, o SQL Server processa instruções SELECT nestas tabelas ou vistas indexadas como se os índices das colunas computadas ou das vistas não existissem.

  • Quando o SET RESULT_SET_CACHING está ATIVADO, ativa a funcionalidade de cache de resultados para a sessão cliente atual. Result_set_caching não pode ser ativado para uma sessão se estiver desligado ao nível da base de dados. Quando o RESULT_SET_CACHING SET está DESLIGADO, a funcionalidade de cache do conjunto de resultados está desativada para a sessão cliente atual. Alterar este contexto exige a pertença ao papel público. Aplica-se a: Azure Synapse Analytics Gen2