Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Depósito no Microsoft Fabric
Banco 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).
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 ONdefine 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