Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base 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).
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 ONdefine 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