SET Afirmações (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint 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