SET Afirmações (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 SET instruções que alteram o tratamento atual da sessão de informação específica. As SET declarações estão agrupadas nas categorias apresentadas na tabela seguinte.

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

Categoria Statements
Declarações de data e hora SET DATEFIRST

SET DATEFORMAT
Instruções de bloqueio SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Declaraçõ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
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.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

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

SET ROWCOUNT

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

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Declaraçõ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
Extratos de transações SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Considerações ao Utilizar as SET Afirmações

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

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

  • Os procedimentos armazenados executam-se com as SET definições especificadas em tempo de execução, exceto para SETSET ANSI_NULLS e SETSET QUOTED_IDENTIFIER. Procedimentos armazenados que SETSET ANSI_NULLS especificam ou SETSET QUOTED_IDENTIFIER utilizam a definição especificada no momento da criação do procedimento armazenado. Se for usado dentro de um procedimento armazenado, qualquer SET definição é 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 definição também se comporta como uma declaração explícita SET , exceto que ocorre no momento do login.

  • As definições da base de dados definidas por usar ALTER DATABASE são válidas apenas ao nível da base de dados e só entram em vigor se 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 SET instrução usar ON e OFF, pode especificar qualquer uma para várias SET opções.

    Observação

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

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

  • SET As definições da instrução sobrepõem-se às definições idênticas das opções da base de dados que são definidas usando ALTER DATABASE. Por exemplo, o valor especificado numa SET ANSI_NULLS instrução irá sobrepor-se à 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.

  • ALTERAR, 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 definições, emitir a instrução de atalho SET reinicia as definiçõ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 sobrepõe-se às definições de atalho comparáveis. Um exemplo de instrução de atalho SET seria SETSET 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 das opções de sessão SET . Quando cada pedido é executado, pode modificar as SET opções. 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 SET opções 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 SET definições de opção.

  • 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 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 para DESLIGADO.

    Se não definir nenhuma destas opções para os valores necessários, INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE as ações em vistas indexadas ou tabelas com índices em colunas computadas 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 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 SET RESULT_SET_CACHING está DESLIGADO, a funcionalidade de cache do conjunto de resultados fica desativada para a sessão atual do cliente. Alterar este contexto exige a pertença ao papel público. Aplica-se a: Azure Synapse Analytics Gen2