Leitores,
Boa tarde!
Nesse post vou falar mais sobre a instrução SET do SQL Server, que além de ser utilizada para definição de variáveis, também pode ser utilizada para alterar configurações da sessão atual. São elas:
Categoria | Instrução | Descrição |
---|---|---|
Data e Hora | SET DATEFIRST |
Define o primeiro dia da semana como um número de 1 a 7, onde: 1 = Segunda-feira 2 = Terça-feira 3 = Quarta-feira 4 = Quinta-feira 5 = Sexta-feira 6 = Sábado 7 = Domingo (Padrão) |
SET DATEFORMAT | Define o formato padrão de datas (mdy, dmy, ymd, etc) | |
Bloqueio (LOCKS) | SET DEADLOCK_PRIORITY | Especifica a importância da sessão atual caso haja um Deadlock. Caso duas sessões entrem em Deadlock e tenham a mesma prioridade, ambas são elegíveis a serem eliminadas. Caso possuam prioridades diferentes, a sessão de menor prioridade é eliminada. Parâmetros: |
SET LOCK_TIMEOUT | Especifica o número de milissegundos até o banco retornar um erro de bloqueio, onde: – -1 (padrão): indica nenhum tempo limite (isto é, esperar indefinidamente). – 0: significa não esperar e retornar uma mensagem assim que um bloqueio for encontrado |
|
Diversas | SET CONCAT_NULL_YIELDS_NULL | Quando SET CONCAT_NULL_YIELDS_NULL for ON, a concatenação de um valor nulo com uma cadeia de caracteres gera um resultado NULL.
Por exemplo, SELECT ‘abc’ + NULL gera NULL. Quando SET CONCAT_NULL_YIELDS_NULL for OFF, a concatenação de um valor nulo com uma cadeia de caracteres gera a própria cadeia de caracteres (o valor nulo é tratado como uma cadeia de caracteres vazia). Por exemplo, SELECT ‘abc’ + NULL gera abc |
SET CURSOR_CLOSE_ON_COMMIT | Quando SET CURSOR_CLOSE_ON_COMMIT for ON, esta configuração fecha qualquer cursor aberto em confirmação ou reversão em conformidade com a ISO.
Quando SET CURSOR_CLOSE_ON_COMMIT for OFF, o cursor não será fechado quando uma transação estiver confirmada |
|
SET FIPS_FLAGGER |
Especifica a verificação de conformidade com o padrão FIPS 127-2. Baseia-se no padrão ISO.
Parâmetros: |
|
SET IDENTITY_INSERT |
Permite inserir valores explícitos em uma coluna IDENTITY (Somente uma tabela em uma sessão pode ter a propriedade IDENTITY_INSERT definida como ON)
Exemplo (Parâmetros = ON ou OFF): |
|
SET LANGUAGE |
Especifica o ambiente de idioma para a sessão. O idioma da sessão determina os formatos datetime e as mensagens de sistema.
Exemplo: SET LANGUAGE ‘Brazilian’ |
|
SET OFFSETS | Retorna o deslocamento (posição relativa ao início de uma instrução) das palavras-chave especificadas (Não utilize, pois será removido em versões futuras) | |
SET QUOTED_IDENTIFIER | Quando SET QUOTED_IDENTIFIER está ON, os identificadores podem ser delimitados por aspas duplas e strings devem ser delimitadas por aspas simples. Quando SET QUOTED_IDENTIFIER está OFF, os identificadores não podem estar entre aspas e strings podem ser delimitadas por aspas simples ou duplas. |
|
Execuções de Query | SET ARITHABORT | Define se ao ocorrer overflow ou erro de divisão por zero a consulta será encerrada (ON) |
SET ARITHIGNORE | Controla se são retornadas mensagens de erro de overflow ou divisão por zero (OFF) | |
SET FMTONLY | Faz com que, caso habilitado (ON), a instrução retorne apenas a informações de colunas (Metadados). Nenhuma linha de dados é retornada (Não use, será descontinuado) | |
SET NOCOUNT | Controla se será exibida a quantidade de registros afetados pela consulta (OFF) ou se será ocultado (ON).
Obs: A função @@ROWCOUNT é atualizada mesmo quando SET NOCOUNT é ON. |
|
SET NOEXEC | Quando SET NOEXEC é ON, o banco compila as instruções TSQL, valida (PARSE), mas não as executa | |
SET NUMERIC_ROUNDABORT | Quando SET NUMERIC_ROUNDABORT é ON, um erro é gerado depois de ocorrer uma perda de precisão em uma expressão. Quando é OFF, perdas de precisão não geram mensagens de erro e o resultado é arredondado à precisão da coluna ou variável que armazena o resultado.
A perda de precisão ocorre quando é feita uma tentativa de armazenar um valor com uma precisão fixa em uma coluna ou variável com menos precisão. |
|
SET PARSEONLY | Quando SET PARSEONLY é ON, Examina a sintaxe de cada instrução e retorna quaisquer mensagens de erro sem compilar ou executar a instrução | |
SET QUERY_GOVERNOR_COST_LIMIT | Define um valor inteiro que especifica o maior de custo que uma query na sessão pode atingir Essa opção sobrescreve a configuração “Query governor cost limit” |
|
SET ROWCOUNT |
Faz o SQL Server parar o processamento de consulta depois que o número especificado de linhas for retornado
Exemplo para retornar apenas 10 linhas (Prefira usar o TOP) SELECT * FROM dbo.Clientes |
|
SET TEXTSIZE | Especifica o tamanho de dados varchar(max), nvarchar(max), varbinary(max), text, ntexte image retornados por uma instrução SELECT | |
Configurações ISO | SET ANSI_DEFAULTS | Controla um grupo de configurações do SQL Server. Quando ativada (ON), esta opção habilita as seguintes configurações ISO: – SET ANSI_NULLS – SET CURSOR_CLOSE_ON_COMMIT – SET ANSI_NULL_DFLT_ON – SET IMPLICIT_TRANSACTIONS – SET ANSI_PADDING – SET QUOTED_IDENTIFIER – SET ANSI_WARNINGS |
SET ANSI_NULL_DFLT_OFF | Quando SET ANSI_NULL_DFLT_OFF for ON, novas colunas criadas com o uso das instruções ALTER TABLE e CREATE TABLE serão NOT NULL se não for especificado explicitamente | |
SET ANSI_NULL_DFLT_ON | Quando SET ANSI_NULL_DFLT_OFF for ON, novas colunas criadas com o uso das instruções ALTER TABLE e CREATE TABLE aceitarão valores NULL se não for especificado explicitamente | |
SET ANSI_NULLS |
Especifica o comportamento compatível ISO dos operadores de comparação Igual a (=) e Diferente de (<>) quando usados com valores nulos.
Quando SET ANSI_NULLS é ON, uma instrução SELECT que usa WHERE column_name = NULL retorna zero linhas mesmo que haja valores nulos em column_name |
|
SET ANSI_PADDING | Quando SET ANSI_PADDING = ON, espaços à direita serão cortados em colunas VARCHAR e VARBINARY | |
SET ANSI_WARNINGS |
Especifica o comportamento padrão ISO para várias condições de erro: – Quando definida como ON, se forem exibidos valores nulos em funções de agregação, como SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, VARP ou COUNT, será gerada uma mensagem de aviso. Quando definido como OFF, nenhum aviso é emitido. – Quando definida como ON, os erros de estouro aritmético e de divisão por zero fazem a instrução ser retornada e uma mensagem de erro é gerada |
|
Estatísticas | SET FORCEPLAN | Quando FORCEPLAN está definido como ON, o otimizador de consulta do SQL Server processa os JOINS na mesma ordem conforme as tabelas são exibidas na cláusula FROM de uma consulta |
SET SHOWPLAN_ALL | Quando SET SHOWPLAN_ALL é ON, faz com que o banco não execute as queries, apenas retorne informações detalhadas e estimativas de custos sobre como as instruções são executadas | |
SET SHOWPLAN_TEXT | Quando SET SHOWPLAN_TEXT é ON, faz com que o banco não execute as queries, apenas retorne no formato TEXTO informações detalhadas e estimativas de custos sobre como as instruções são executadas | |
SET SHOWPLAN_XML | Quando SET SHOWPLAN_XML é ON, faz com que o banco não execute as queries, apenas retorne no formato XML informações detalhadas e estimativas de custos sobre como as instruções são executadas | |
SET STATISTICS IO | Quando SET STATISTICS IO é ON, faz o SQL Server exibir informações referentes à quantidade de atividade em disco gerada pelas instruções | |
SET STATISTICS XML | Quando é ON, Faz com que o SQL Server execute instruções e gere informações detalhadas sobre como as instruções foram executadas na forma de um documento XML | |
SET STATISTICS PROFILE | Quando STATISTICS PROFILE está como ON, cada consulta executada retorna o número de linhas geradas por cada operador e número de vezes que o operador foi executado | |
SET STATISTICS TIME | Quando está como ON, exibe o número de milissegundos necessários para analisar, compilar e executar cada instrução | |
Transações | SET IMPLICIT_TRANSACTIONS |
Quando ON, SET IMPLICIT_TRANSACTIONS define a conexão em modo de transação implícita. Neste modo, uma instrução BEGIN TRANSACTION implícita iniciará duas transações aninhadas e a execução de qualquer uma das seguintes instruções inicia uma transação: – ALTER TABLE – FETCH – REVOKE – BEGIN TRANSACTION – GRANT – SELECT – CREATE – INSERT – TRUNCATE TABLE – DELETE – OPEN – UPDATE – DROP |
SET REMOTE_PROC_TRANSACTIONS | Quando ON, Especifica que quando uma transação local está ativa, a execução de uma StoredProcedure remotamente inicia uma transação distribuída (Não utilizar, será descontinuado) | |
SET TRANSACTION ISOLATION LEVEL |
Controla o comportamento de bloqueio e do controle de versão de linha:
– READ UNCOMMITTED: Especifica que as instruções podem ler linhas que foram modificadas por outras transações, mas que ainda não foram confirmadas (NOLOCK). – READ COMMITTED (Padrão): Especifica que as instruções não podem ler dados que foram modificados, mas que ainda não foram confirmados por outras transações. Isso impede leituras sujas. – REPEATABLE READ: Especifica que as instruções não podem ler dados que foram modificados, mas que ainda não foram confirmados por outras transações e que nenhuma outra transação pode modificar dados que foram lidos pela transação atual até que a transação atual seja concluída. – SNAPSHOT: Especifica que os dados lidos por qualquer instrução em uma transação serão a versão transacionalmente consistente que existia no início da transação. A transação pode reconhecer apenas modificações de dados que estavam confirmadas antes do início da transação. Modificações de dados efetuadas por outras transações após o início da transação atual não são visíveis para as instruções em execução na transação atual. O efeito será como se as instruções em uma transação obtivessem um instantâneo dos dados confirmados conforme existiam no início da transação. – SERIALIZABLE: As instruções não podem ler dados que foram modificados, e que ainda não foram confirmados por outras transações. Nenhuma outra transação pode modificar dados lidos pela transação atual até que a transação atual seja concluída. Outras transações não podem inserir linhas novas com valores chave que estejam no intervalo de chaves lido por qualquer instrução da transação atual até que esta seja concluída. |
|
SET XACT_ABORT | Quando é ON, especifica que o SQL Server deve reverter (ROLLBACK) automaticamente a transação atual quando uma instrução Transact-SQL gerar um erro em tempo de execução. |
E é isso aí, pessoal! Para maiores informações, consulte a página oficial da Microsoft sobre o comando SET
Até a próxima!
1 Response
[…] Antes de executar a query, execute o comando “SET STATISTICS IO ON”. Quando fazemos isso o SQL Server vai exibir informações referentes à quantidade de leituras de páginas que a query fez. Aconselho uma lida nesse post no blog do Dirceu. https://www.dirceuresende.com/blog/os-comandos-set-do-sql-server. […]