Opções ALTER DATABASE SET (Transact-SQL)
Define as opções de banco de dados no Microsoft SQL Server, Banco de Dados SQL do Azure e Azure Synapse Analytics. Para obter outras opções de ALTER DATABASE, confira ALTER DATABASE.
Observação
Definir algumas opções com ALTER DATABASE pode exigir acesso exclusivo ao banco de dados. Se a instrução ALTER DATABASE não for concluída em tempo hábil, verifique se outras sessões no banco de dados estão bloqueando a sessão ALTER DATABASE.
Para obter mais informações sobre as convenções de sintaxe, confira Convenções de sintaxe Transact-SQL.
Selecionar um produto
Na linha a seguir, selecione qualquer nome de produto de seu interesse. Fazer isso exibirá conteúdo diferente aqui nesta página da Web, apropriado para qualquer produto que você selecionar.
* SQL Server *
SQL Server
O espelhamento de banco de dados, Grupos de disponibilidade AlwaysOn e os níveis de compatibilidade são opções SET
, mas são descritos em artigos separados devido ao seu tamanho. Para saber mais, confira Espelhamento de Banco de Dados de ALTER DATABASE, ALTER DATABASE SET HADR e Nível de compatibilidade de ALTER DATABASE.
Configurações com escopo de banco de dados são usadas para definir várias configurações de banco de dados no nível do banco de dados individual. Para obter mais informações, veja ALTERAR A CONFIGURAÇÃO NO ESCOPO DO BANCO DE DADOS.
Observação
Muitas opções de definição de banco de dados podem ser configuradas para a sessão atual usando instruções SET e são configuradas com frequência por aplicativos quando eles são conectados. As opções definidas no nível de sessão substituem os valores de ALTER DATABASE SET
. As opções de banco de dados descritas nas seções a seguir são valores que você pode definir para sessões que não fornecem explicitamente outros valores de opções de definição.
Sintaxe
ALTER DATABASE { database_name | CURRENT }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
<option_spec> ::=
{
<accelerated_database_recovery>
| <auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <containment_option>
| <cursor_option>
| <database_mirroring_option>
| <date_correlation_optimization_option>
| <db_encryption_option>
| <db_state_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <external_access_option>
| FILESTREAM ( <FILESTREAM_option> )
| <HADR_options>
| <mixed_page_allocation_option>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <remote_data_archive_option>
| <persistent_log_buffer_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <suspend_for_snapshot_backup>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
}
;
<accelerated_database_recovery> ::=
{
ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
[ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ];
}
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<containment_option> ::=
CONTAINMENT = { NONE | PARTIAL }
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
}
<database_mirroring_option>
ALTER DATABASE Database Mirroring
<date_correlation_optimization_option> ::=
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
<db_encryption_option> ::=
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
<db_state_option> ::=
{ ONLINE | OFFLINE | EMERGENCY }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::=
DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<external_access_option> ::=
{
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
| DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}
<FILESTREAM_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
| DIRECTORY_NAME = <directory_name>
}
<HADR_options> ::=
ALTER DATABASE SET HADR
<mixed_page_allocation_option> ::=
MIXED_PAGE_ALLOCATION { OFF | ON }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF [ ( FORCED ) ]
| = ON [ ( <query_store_option_list> [,...n] ) ]
| ( < query_store_option_list> [,...n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<recovery_option> ::=
{
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
| PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}
<remote_data_archive_option> ::=
{
REMOTE_DATA_ARCHIVE =
{
ON ( SERVER = <server_name>,
{
CREDENTIAL = <db_scoped_credential_name>
| FEDERATED_SERVICE_ACCOUNT = ON | OFF
}
)
| OFF
}
}
<persistent_log_buffer_option> ::=
{
PERSISTENT_LOG_BUFFER
{
= ON (DIRECTORY_NAME= 'path-to-directory-on-a-DAX-volume')
| = OFF
}
}
<service_broker_option> ::=
{
ENABLE_BROKER
| DISABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
| HONOR_BROKER_PRIORITY { ON | OFF }
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<suspend_for_snapshot_backup> ::=
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]
<target_recovery_time_option> ::=
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
<termination>::=
{
ROLLBACK AFTER number [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
<data_retention_policy> ::=
DATA_RETENTION { ON | OFF }
Argumentos
database_name
O nome do banco de dados a ser modificado.
CURRENT
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Executa a ação no banco de dados atual.
CURRENT
não é compatível com todas as opções em todos os contextos. Se CURRENT
falhar, forneça o nome do banco de dados.
<accelerated_database_recovery> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2019 (15.x))
Habilita de recuperação acelerada de banco de dados (ADR). A ADR é definida como OFF por padrão no SQL Server 2019 (15.x) e posterior. Usando essa sintaxe, você pode designar um grupo de arquivos específico para os dados do Repositório de Versão Persistente (PVS). Se nenhum grupo de arquivos for especificado, a PVS será armazenada no grupo de arquivos PRIMARY
. Para obter mais informações, consulte Gerenciarde recuperação acelerada de banco de dados.
<auto_option> ::=
Controla opções automáticas.
AUTO_CLOSE { ON | OFF }
ATIVADO
O banco de dados é desligado corretamente e seus recursos são liberados depois da saída do último usuário.
O banco de dados é reaberto automaticamente quando um usuário tenta usá-lo de novo. Por exemplo, esse comportamento ocorre quando um usuário emite uma instrução
USE database_name
. O banco de dados pode ser desligado de forma limpa com AUTO_CLOSE definido como ON. Nesse caso, o banco de dados não será reaberto até que um usuário tente usar o banco de dados na próxima vez que o Mecanismo de Banco de Dados for reiniciado.Após o desligamento de um banco de dados, da próxima vez que um aplicativo tentar usá-lo, o banco de dados deverá primeiro ser aberto e, em seguida, o status alterado para online. Isso pode levar algum tempo e pode resultar em tempos limite de aplicativo.
OFF
O banco de dados permanecerá aberto depois da saída do último usuário.
A opção AUTO_CLOSE é útil para bancos de dados desktop porque permite que os arquivos de banco de dados sejam gerenciados como arquivos comuns. Eles podem ser movidos, copiados para fazer backups ou mesmo enviados por email a outros usuários. O processo AUTO_CLOSE é assíncrono; abrir e fechar o banco de dados repetidamente não mais prejudica o desempenho.
Observação
A opção AUTO_CLOSE não está disponível em um Banco de Dados Independente nem em Banco de Dados SQL.
Você pode determinar o status dessa opção examinando a coluna is_auto_close_on
na exibição de catálogo sys.databases ou a propriedade IsAutoClose
da função DATABASEPROPERTYEX.
Quando AUTO_CLOSE é definido como ON, algumas colunas no exibição de catálogo sys.databases e a função DATABASEPROPERTYEX retorna NULL porque o banco de dados não está disponível para recuperar os dados. Para resolver esse problema, execute uma instrução USE para abrir o banco de dados.
O espelhamento de banco de dados exige que AUTO_CLOSE seja definido como OFF.
Quando o banco de dados é definido como AUTOCLOSE = ON
, uma operação que inicia o desligamento automático do banco de dados limpa o cache de planos da instância do SQL Server. A limpeza do cache de planos gera uma recompilação de todos os planos de execução subsequentes e pode provocar uma redução repentina e temporária do desempenho de consultas. Do SQL Server 2005 (9.x) Service Pack 2 em diante, para cada armazenamento em cache limpo no cache de planos, o log de erros SQL Server contém a seguinte mensagem informativa: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations
. Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja liberado dentro desse intervalo de tempo.
A configuração AUTO_CLOSE pode ser um recurso útil em algumas situações raras, por exemplo, em uma instância do SQL Server sem memória suficiente para operar de forma estável com um grande número de bancos de dados ou para uma instância herdada do SQL Server de 32 bits com um grande número de bancos de dados. Nesses cenários, pode ser útil habilitar AUTO_CLOSE e conservar os recursos de memória necessários para manter um banco de dados aberto quando não houver nenhum aplicativo usando o banco de dados. Quando o banco de dados está aberto, algumas alocações de memória padrão são necessárias (por exemplo, estruturas internas para representar vários objetos de metadados de banco de dados e buffers de log de transações).
AUTO_CREATE_STATISTICS { ON | OFF }
ATIVADO
O Otimizador de Consulta cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar os planos e o desempenho de consulta. Estas estatísticas de coluna única são criadas quando o otimizador de consulta compila consultas. As estatísticas de coluna única só são criadas em colunas que ainda não são a primeira de um objeto de estatísticas existente.
A configuração padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
OFF
O otimizador de consulta não cria estatísticas em colunas únicas em predicados de consulta quando está compilando consultas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoCreateStatistics
da função DATABASEPROPERTYEX.
Para obter mais informações, confira a seção "Usar as opções de estatísticas em todo o banco de dados" em Estatísticas.
INCREMENTAL = ON | OFF
Aplica-se ao: SQL Server (Começando pelo SQL Server 2014 (12.x)) e Banco de Dados SQL do Azure
Defina AUTO_CREATE_STATISTICS como ON e INCREMENTAL como ON. Isso define estatísticas criadas automaticamente como incrementais sempre que estatísticas incrementais são compatíveis. O valor padrão é OFF. Para saber mais, veja CREATE STATISTICS.
AUTO_SHRINK {ON | OFF}
ATIVADO
Os arquivos de banco de dados são candidatos à redução periódica. A menos que você tenha um requisito específico, não defina a opção AUTO_SHRINK banco de dados como ON. Para saber mais, confira Reduzir um banco de dados.
Arquivos de dados e arquivos de log podem ser reduzidos automaticamente. AUTO_SHRINK reduzirá o tamanho do log de transações somente se o banco de dados estiver definido como modelo de recuperação SIMPLE ou se o log tiver sido submetido a backup. Quando AUTO_SHRINK é definido como OFF, os arquivos de banco de dados não são reduzidos automaticamente durante as verificações periódicas de espaço não utilizado.
A opção AUTO_SHRINK reduz os arquivos quando mais que 25% do arquivo contém espaço não utilizado. Ele reduz o arquivo para um de dois tamanhos (o que for maior):
- o tamanho em que 25% do arquivo é espaço não utilizado
- o tamanho do arquivo quando ele foi criado
Não é possível reduzir um banco de dados somente leitura.
OFF
Os arquivos de banco de dados não são reduzidos automaticamente durante verificações periódicas de espaço não utilizado.
Você pode determinar o status dessa opção examinando a coluna is_auto_shrink_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoShrink
da função DATABASEPROPERTYEX.
Observação
A opção AUTO_SHRINK não está disponível em um banco de dados independente.
AUTO_UPDATE_STATISTICS { ON | OFF }
ATIVADO
Especifica que o otimizador de consulta atualiza as estatísticas quando elas são usadas por uma consulta e quando podem estar desatualizadas. As estatísticas ficam desatualizadas depois que operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou na exibição indexada. O otimizador de consulta determina quando estatísticas podem estar desatualizadas contando o número de modificações de dados desde a última atualização das estatísticas e comparando o número de modificações a um limite. O limite se baseia no número de linhas na tabela ou na exibição indexada.
O otimizador de consulta verifica se há estatísticas desatualizadas antes de compilar uma consulta e executa um plano de consulta armazenado em cache. O otimizador de consulta usa as colunas, as tabelas e as exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. O otimizador de consulta determina essas informações antes de compilar uma consulta. Antes de executar um plano de consulta em cache, o Mecanismo de Banco de Dados verifica se o plano de consulta faz referência a estatísticas atualizadas.
A opção AUTO_UPDATE_STATISTICS se aplica a estatísticas criadas para índices, colunas únicas em predicados de consulta, além de estatísticas criadas por meio da instrução CREATE STATISTICS. Essa opção também se aplica a estatísticas filtradas.
O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
Use a opção AUTO_UPDATE_STATISTICS_ASYNC para especificar se as estatísticas são atualizadas de forma síncrona ou assíncrona.
OFF
Especifica que o otimizador de consulta não atualiza as estatísticas quando elas são usadas por uma consulta. O otimizador de consulta também não atualiza estatísticas quando elas podem estar desatualizadas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoUpdateStatistics
da função DATABASEPROPERTYEX.
Para obter mais informações, confira a seção "Usar as opções de estatísticas em todo o banco de dados" em Estatísticas.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
ATIVADO
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O otimizador de consulta não aguarda a conclusão das atualizações de estatísticas para compilar consultas.
Definir essa opção como ON não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é definida como OFF e o otimizador de consulta atualiza as estatísticas de forma síncrona.
OFF
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O otimizador de consulta aguarda a conclusão das atualizações de estatísticas para compilar consultas.
Observação
Definir essa opção como OFF não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_async_on
na exibição de catálogo sys.databases.
Para obter mais informações que descrevem quando usar as atualizações de estatísticas síncronas ou assíncronas, confira a seção "Opções de estatísticas" em Estatísticas.
<automatic_tuning_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2017 (14.x))
Habilita ou desabilita a opção de FORCE_LAST_GOOD_PLAN
de. Você pode exibir o status dessa opção na exibição sys.database_automatic_tuning_options
.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }
DEFAULT
O valor padrão do SQL Server é OFF.
ATIVADO
O Mecanismo de Banco de Dados força automaticamente o último plano válido conhecido nas consultas Transact-SQL, em que o novo plano de consulta causa regressões de desempenho. O Mecanismo de Banco de Dados monitora continuamente o desempenho de consultas da consulta Transact-SQL com o plano forçado.
Se houver ganhos de desempenho, o Mecanismo de Banco de Dados continua usando o último plano válido conhecido. Se os ganhos de desempenho não forem detectados, o Mecanismo de Banco de Dados produzirá um novo plano de consulta. A instrução falhará se a do Repositório de Consultas
não estiver habilitada ou se o Repositório de Consultas não estiver no modo de Leitura/Gravação. OFF
O Mecanismo de Banco de Dados relata possíveis regressões de desempenho de consulta causadas por alterações do plano de consulta na exibição sys.dm_db_tuning_recommendations. No entanto, essas recomendações não são aplicadas automaticamente. Os usuários podem monitorar recomendações ativas e corrigir problemas identificados aplicando scripts Transact-SQL mostrados na exibição. O valor padrão é OFF.
<change_tracking_option> ::=
Aplica-se a: SQL Server e Banco de Dados SQL do Azure
Controla as opções de controle de alterações. É possível habilitar o controle de alterações, definir opções, alterar opções e desabilitar o controle de alterações. Para obter exemplos, confira a seção Exemplos mais adiante neste artigo.
ATIVADO
Habilita o controle de alterações no banco de dados. Quando você habilita o controle de alterações, também pode definir as opções AUTO CLEANUP e CHANGE RETENTION.
AUTO_CLEANUP = { ON | OFF }
ATIVADO
As informações de controle de alterações são removidas automaticamente depois do período de retenção especificado.
OFF
Os dados de controle de alterações não são removidos automaticamente do banco de dados.
CHANGE_RETENTION = período_de_retenção { DAYS | HOURS | MINUTES }
Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados serão removidos somente quando o valor AUTO_CLEANUP for ON.
retention_period é um inteiro que especifica o componente numérico do período de retenção.
O período de retenção padrão é de 2 dias. O período de retenção mínimo é de 1 minuto. O tipo de retenção padrão é DAYS.
OFF Desabilita o controle de alterações no banco de dados. Desabilite o controle de alterações em todas as tabelas antes de desabilitá-lo no banco de dados.
<containment_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Controla opções de contenção de banco de dados.
CONTAINMENT = { NONE | PARTIAL}
Nenhuma
O banco de dados não é um banco de dados independente.
PARTIAL
O banco de dados é um banco de dados independente. A configuração da contenção do banco de dados como parcial falhará se o banco de dados tiver replicação, a captura de dados de alteração ou o controle de alterações habilitado. A verificação de erros é interrompida depois de uma falha. Para obter mais informações sobre bancos de dados independentes, consulte Contained Databases.
<cursor_option> ::=
Controla opções de cursor.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
ATIVADO
Todos os cursores abertos quando você confirma ou reverte uma transação são fechados.
OFF
Os cursores permanecem abertos quando uma transação é confirmada; reverter uma transação fecha todos os cursores, exceto os cursores definidos como INSENSITIVE ou STATIC.
As configurações no nível de conexão que são definidas com o uso da instrução SET substituem a configuração de banco de dados padrão por CURSOR_CLOSE_ON_COMMIT. Clientes ODBC e OLE DB emitem uma configuração CURSOR_CLOSE_ON_COMMIT de instrução SET no nível de conexão como desativada para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET CURSOR_CLOSE_ON_COMMIT.
Você pode determinar o status dessa opção examinando a coluna is_cursor_close_on_commit_on
na exibição de catálogo sys.databases ou a propriedade IsCloseCursorsOnCommitEnabled
da função DATABASEPROPERTYEX.
CURSOR_DEFAULT { LOCAL | GLOBAL }
Aplica-se ao: SQL Server
Controla se o escopo do cursor usa LOCAL ou GLOBAL.
LOCAL
Quando você especifica LOCAL e não define um cursor como GLOBAL ao criar o cursor, o escopo do cursor é local. Especificamente, o escopo é local para o lote, para o procedimento armazenado ou para o gatilho em que você criou o cursor. O nome de cursor é válido somente dentro desse escopo.
O cursor pode ser referenciado por meio de variáveis de cursor local no lote, no procedimento armazenado ou no gatilho, ou em um parâmetro OUTPUT do procedimento armazenado. O cursor é implicitamente desalocado quando o lote, o procedimento armazenado ou o gatilho termina. O cursor é desalocado a menos que tenha sido passado de volta em um parâmetro OUTPUT. O cursor pode ser passado de volta em um parâmetro OUTPUT. Se o cursor passar de volta dessa forma, ele será desalocado quando a última variável que faz referência ao cursor for desalocada ou sair do escopo.
GLOBAL
Quando GLOBAL é especificado e um cursor não é definido como LOCAL ao ser criado, o escopo do cursor é global para a conexão. O nome do cursor pode ser referenciado em qualquer procedimento armazenado ou lote executado pela conexão.
O cursor é implicitamente desalocado somente na desconexão. Para saber mais, confira DECLARE CURSOR.
Você pode determinar o status dessa opção examinando a coluna is_local_cursor_default
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsLocalCursorsDefault
da função DATABASEPROPERTYEX.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
LIGADO por padrão, mas também definido automaticamente como DESLIGADO após a operação de restauração pontual. Para saber mais, incluindo como habilitar essa configuração, confira Como configurar a política de retenção.
ATIVADO
Padrão. Habilita a política de retenção de tabela temporária. Para obter mais informações, confira Gerenciar a retenção de dados históricos em tabelas temporárias com versão do sistema.
OFF
Não execute a política de retenção de histórico temporal.
<data_retention_policy> ::=
aplica-se a: somente sql do Azure no Edge.
DATA_RETENTION { ON | OFF }
ATIVADO
Habilita a limpeza baseada na política de retenção de dados em um banco de dados.
OFF
Desabilita a limpeza baseada na política de retenção de dados em um banco de dados.
<database_mirroring>
Aplica-se ao: SQL Server
Veja as descrições de argumentos em Espelhamento de banco de dados ALTER DATABASE.
<date_correlation_optimization_option> ::=
Aplica-se ao: SQL Server
Controla a opção date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
ATIVADO
SQL Server mantém as estatísticas de correlação em que uma restrição FOREIGN KEY vincula duas tabelas quaisquer no banco de dados e as tabelas têm colunas datetime.
OFF
As estatísticas de correlação não são mantidas.
Para que seja possível definir DATE_CORRELATION_OPTIMIZATION como ON, não deve haver nenhuma conexão ativa com o banco de dados exceto aquela que está executando a instrução ALTER DATABASE. Depois, há suporte a várias conexões.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_date_correlation_on
na exibição de catálogo sys.databases.
<db_encryption_option> ::=
Controla o estado de criptografia do banco de dados.
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
ATIVADO
Define o banco de dados a ser criptografado.
OFF
Define o banco de dados a não ser criptografado.
SUSPEND
Aplica-se ao: SQL Server (Começando pelo SQL Server 2019 (15.x))
Pode ser usado para pausar a verificação de criptografia depois que a criptografia de dados transparente foi habilitada ou desabilitada ou depois que a chave de criptografia foi alterada.
RESUME
Aplica-se ao: SQL Server (Começando pelo SQL Server 2019 (15.x))
Pode ser usado para retomar um exame de criptografia anteriormente em pausa.
Para obter mais informações sobre criptografia de banco de dados, consulte TDE (Transparent Data Encryption)e Transparent Data Encryption para o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Azure Synapse Analytics.
Quando a criptografia é habilitada no nível do banco de dados, todos os grupos de arquivos são criptografados. Todos os novos grupos de arquivos herdam a propriedade criptografada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia de banco de dados falhará.
É possível ver o estado da criptografia do banco de dados e o estado do exame de criptografia usando a exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.
<db_state_option> ::=
Aplica-se ao: SQL Server
Controla o estado do banco de dados.
OFFLINE
O banco de dados é fechado, desligado corretamente e marcado como offline. O banco de dados não pode ser modificado enquanto estiver offline.
ONLINE
O banco de dados está aberto e disponível para uso.
EMERGENCY
O banco de dados está marcado como READ_ONLY, o log está desabilitado e o acesso é limitado aos membros da função de servidor fixa sysadmin. EMERGENCY é usado principalmente para a solução de problemas. Por exemplo, um banco de dados marcado como suspeito devido a um arquivo de log corrompido pode ser definido com o estado EMERGENCY. Essa configuração permite habilitar o acesso somente leitura do administrador do sistema ao banco de dados. Apenas membros da função de servidor fixa sysadmin podem definir um banco de dados com o estado EMERGENCY.
Exige a permissão ALTER DATABASE
no banco de dados de entidades para alterar um banco de dados para o estado offline ou de emergência, e a permissão ALTER ANY DATABASE
no nível do servidor para mover um banco de dados de offline para online.
Você pode determinar o status dessa opção examinando as colunas state
e state_desc
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade Status
da função DATABASEPROPERTYEX. Para obter mais informações, consulte Database States.
Um banco de dados marcado como RESTORING não pode ser definido como OFFLINE, ONLINE ou EMERGENCY. Um banco de dados pode estar no estado RESTOREING durante uma operação de restauração ativa ou quando uma operação de restauração de um banco de dados ou arquivo de log falha devido a um arquivo de backup corrompido.
<db_update_option> ::=
Controla se atualizações são permitidas no banco de dados.
READ_ONLY
Os usuários podem ler dados do banco de dados, mas não modificá-los.
Observação
Para melhorar o desempenho da consulta, atualize as estatísticas antes de configurar um banco de dados como READ_ONLY. Se forem necessárias estatísticas adicionais depois que um banco de dados for definido como READ_ONLY, o Mecanismo de Banco de Dados criará estatísticas no banco de dados do sistema
tempdb
. Para obter mais informações sobre estatísticas para um banco de dados somente leitura, veja Estatísticas.READ_WRITE
O banco de dados está disponível para operações de leitura e gravação.
Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados. Para obter mais informações, consulte a cláusula SINGLE_USER.
Observação
Nos bancos de dados federados Banco de Dados SQL do Azure, SET { READ_ONLY | READ_WRITE }
está desabilitado.
<db_user_access_option> ::=
Controla o acesso de usuários ao banco de dados.
SINGLE_USER
Aplica-se ao: SQL Server
Especifica que somente um usuário por vez pode acessar o banco de dados. Se você especificar SINGLE_USER e outro usuário se conectar ao banco de dados, a instrução ALTER DATABASE será bloqueada até que todos os usuários se desconectem do banco de dados especificado. Para substituir esse comportamento, veja a cláusula WITH de <encerramento>.
O banco de dados permanecerá no modo SINGLE_USER, mesmo que o usuário que definiu a opção saia do serviço. Nesse momento, um usuário diferente, mas somente um, poderá se conectar ao banco de dados.
Antes de definir o banco de dados como SINGLE_USER, verifique se a opção AUTO_UPDATE_STATISTICS_ASYNC está definida como OFF. Quando definido como ON, o thread em segundo plano usado para atualizar estatísticas usa uma conexão com o banco de dados e você não pode acessar o banco de dados no modo de usuário único. Para exibir o status dessa opção, consulte a coluna is_auto_update_stats_async_on
na exibição de catálogo sys.databases. Se a opção estiver definida como ON, execute as tarefas a seguir:
Defina AUTO_UPDATE_STATISTICS_ASYNC como OFF.
Verifique se há estatísticas assíncronas ativas, examinando a exibição de gerenciamento dinâmico sys.dm_exec_background_job_queue.
Se houver tarefas ativas, permita que as tarefas sejam concluídas ou as termine manualmente usando KILL STATS JOB.
RESTRICTED_USER
Permite que somente os membros da função de banco de dados fixa db_owner
e das funções de servidor fixa dbcreator
e sysadmin
se conectem ao banco de dados. RESTRICTED_USER não limita seu número. Desconecte todas as conexões com o banco de dados usando o período especificado pela cláusula de término da instrução ALTER DATABASE. Depois que o banco de dados fizer a transição para o estado RESTRICTED_USER, as tentativas de conexão realizadas por usuários não qualificados serão recusadas.
MULTI_USER
Todos os usuários com permissões apropriadas para se conectar ao banco de dados são permitidos. Você pode determinar o status dessa opção examinando a coluna user_access
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade UserAccess
da função DATABASEPROPERTYEX.
<delayed_durability_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2014 (12.x))
Controla se as transações são confirmadas completamente duráveis ou duráveis atrasadas.
DISABLED
Todas as transações após
SET DISABLED
são completamente duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou instrução de confirmação são ignoradas.ALLOWED
Todas as transações após
SET ALLOWED
são completamente duráveis ou duráveis atrasadas, dependendo da opção de durabilidade definida no bloco atômico ou na instrução de confirmação.FORCED
Todas as transações após
SET FORCED
são duráveis atrasadas. Todas as opções de durabilidade definidas em um bloco atômico ou instrução de confirmação são ignoradas.
<external_access_option> ::=
Aplica-se ao: SQL Server
Controla se o banco de dados pode ser acessado por recursos externos, como objetos de outro banco de dados.
DB_CHAINING { ON | OFF }
ATIVADO
O banco de dados pode ser a origem ou o destino de um encadeamento de propriedades de bancos de dados.
OFF
O banco de dados não pode participar do encadeamento de propriedades de bancos de dados.
Importante
A instância do SQL Server reconhece essa configuração quando a opção de servidor de encadeamento de propriedade entre bancos é 0 (OFF). Quando Encadeamento de Propriedades de BD for 1 (ON), todos os bancos de dados de usuário poderão participar de cadeias de propriedades de bancos de dados, independentemente do valor dessa opção. Essa opção é definida por meio de sp_configure.
Para definir essa opção, a permissão CONTROL SERVER
no banco de dados é necessária.
A opção DB_CHAINING não pode ser definida nestes bancos de dados do sistema master
, model
e tempdb
.
Você pode determinar o status dessa opção examinando a coluna is_db_chaining_on
na exibição de catálogo sys.databases.
TRUSTWORTHY { ON | OFF }
ATIVADO
Os módulos de banco de dados (por exemplo, funções definidas pelo usuário ou procedimentos armazenados) que usam um contexto de representação poderão acessar recursos fora do banco de dados.
OFF
Os módulos de banco de dados em um contexto de representação não podem acessar os recursos fora do banco de dados.
TRUSTWORTHY será definido como OFF sempre que o banco de dados for anexado.
Por padrão, todos os bancos de dados do sistema, exceto o banco de dados msdb
, têm TRUSTWORTHY definido como OFF. O valor não pode ser alterado para os bancos de dados model
e tempdb
. É recomendável nunca definir a opção TRUSTWORTHY como ON para o banco de dados master
.
Para definir essa opção, a permissão CONTROL SERVER
no banco de dados é necessária.
Você pode determinar o status dessa opção examinando a coluna is_trustworthy_on
na exibição de catálogo sys.databases.
DEFAULT_FULLTEXT_LANGUAGE
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Especifica o valor de idioma padrão para colunas indexadas de texto completo.
Importante
Essa opção será permitida apenas quando CONTAINMENT estiver definido como PARTIAL. Se CONTAINMENT for definido como NONE, ocorrerão erros.
DEFAULT_LANGUAGE
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Especifica a linguagem padrão para todos os logons recém-criados. O idioma pode ser especificado com o fornecimento da ID (lcid), do nome do idioma ou do alias do idioma. Para obter uma lista de nomes de idiomas e aliases aceitáveis, veja sys.syslanguages. Essa opção será permitida apenas quando CONTAINMENT estiver definido como PARTIAL. Se CONTAINMENT for definido como NONE, ocorrerão erros.
NESTED_TRIGGERS
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Especifica se um gatilho AFTER pode ser colocado em cascata, ou seja, executar uma ação que inicia outro gatilho que inicia outro gatilho e assim por diante. Essa opção será permitida apenas quando CONTAINMENT estiver definido como PARTIAL. Se CONTAINMENT for definido como NONE, ocorrerão erros.
TRANSFORM_NOISE_WORDS
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Usado para suprimir uma mensagem de erro se palavras de ruído ou palavras irrelevantes provocarem falha em uma operação Booliana em uma consulta de texto completo. Essa opção será permitida apenas quando CONTAINMENT estiver definido como PARTIAL. Se CONTAINMENT for definido como NONE, ocorrerão erros.
TWO_DIGIT_YEAR_CUTOFF
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Especifica um inteiro de 1753 a 9999 que representa o ano de corte para interpretar anos de dois dígitos e de quatro dígitos. Essa opção será permitida apenas quando CONTAINMENT estiver definido como PARTIAL. Se CONTAINMENT for definido como NONE, ocorrerão erros.
<FILESTREAM_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Controla as configurações de FileTables.
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
OFF
O acesso não transacional a dados de FileTable está habilitado.
READ_ONLY
Os dados FILESTREAM em FileTables neste banco de dados podem ser lidos por processos não transacionais.
FULL
Habilita o acesso não transacional completo aos dados FILESTREAM em FileTables.
DIRECTORY_NAME = <directory_name>
Um nome de diretório compatível com o Windows. Esse nome deve ser exclusivo entre todos os nomes de diretório no nível do banco de dados na instância do SQL Server. A comparação de exclusividade não diferencia maiúsculas de minúsculas, independentemente das configurações de ordenação. Essa opção deve ser definida antes da criação de um FileTable neste banco de dados.
<HADR_options> ::=
Aplica-se ao: SQL Server
Veja ALTER DATABASE SET HADR.
<mixed_page_allocation_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2016 (13.x))
Controla se o banco de dados pode criar páginas iniciais usando uma extensão mista para as oito primeiras páginas de uma tabela ou um índice.
MIXED_PAGE_ALLOCATION { OFF | ON }
OFF
O banco de dados sempre cria páginas iniciais usando extensões uniformes. OFF é o valor padrão.
ATIVADO
O banco de dados pode criar páginas iniciais usando extensões mistas.
Essa configuração está ON para todos os bancos de dados do sistema. O banco de dados do sistema tempdb
é o único banco de dados do sistema compatível com OFF.
<PARAMETERIZATION_option> ::=
Controla a opção de parametrização. Para saber mais sobre parametrização, confira o Guia da arquitetura de processamento de consultas.
PARAMETERIZATION { SIMPLE | FORCED }
SIMPLES
As consultas são parametrizadas com base no comportamento padrão do banco de dados.
FORCED
O SQL Server parametriza todas as consultas feitas no banco de dados.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_parameterization_forced
na exibição de catálogo sys.databases.
<query_store_options> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2016 (13.x))
ON | OFF [ ( FORCED ) ] | CLEAR [ ALL ]
Controla se o Repositório de Consultas está habilitado neste banco de dados, além de controlar a remoção do conteúdo do Repositório de Consultas. Para obter mais informações, confira Cenários de uso do Repositório de Consultas.
ATIVADO
Habilita o Repositório de Consultas.
Muitos novos recursos de desempenho do SQL Server 2022 (16.x), como dicas do Repositório de Consultas, comentários de CE, comentários de DOP (grau de paralelismo) e persistência de MGF (comentários sobre concessão de memória) exigiam que o Repositório de Consultas fosse habilitado. Para bancos de dados que foram restaurados de outras instâncias do SQL Server e para os bancos de dados atualizados de uma atualização in-loco para o SQL Server 2022 (16.x), esses bancos de dados mantêm as configurações anteriores do Repositório de Consultas. Se houver preocupação com a sobrecarga que o Repositório de Consultas pode introduzir, os administradores poderão aproveitar políticas de captura personalizadas com
QUERY_CAPTURE_MODE = CUSTOM
. Para obter exemplos de como habilitar o Repositório de Consultas com opções de política de captura personalizada, consulte a seção Exemplos mais adiante neste artigo.OFF [ ( FORCED ) ]
Desabilita o Repositório de Consultas. FORCED é opcional. FORCED anula todas as tarefas em execução em segundo plano do Repositório de Consultas e ignora a liberação síncrona quando o Repositório de Consultas é desativado. Faz com que o Repositório de Consultas seja desligado o mais rápido possível. FORCED aplica-se a SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 e builds posteriores.
Observação
O Repositório de Consultas não pode ser desabilitado no Banco de Dados SQL do Azure. Executar
ALTER DATABASE [database] SET QUERY_STORE = OFF
retorna o aviso'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.CLEAR [ ALL ]
Remove dados relacionados a consulta do Repositório de Consultas. ALL é opcional. ALL remove dados relacionados a consulta e metadados da Repositório de Consultas.
OPERATION_MODE { READ_ONLY | READ_WRITE }
Descreve o modo de operação do Repositório de Consultas.
READ_WRITE
O Repositório de Consultas coleta e persiste as informações de estatísticas de execução do runtime e do plano de consulta.
READ_ONLY
As informações podem ser lidas do Repositório de Consultas, mas novas informações não são adicionadas. Se o espaço máximo emitido do Repositório de Consultas tiver sido esgotado, o Repositório de Consultas alterará seu modo de operação para READ_ONLY.
CLEANUP_POLICY
Descreve a política de retenção de dados do Repositório de Consultas. STALE_QUERY_THRESHOLD_DAYS determina o número de dias durante os quais as informações de uma consulta são mantidas no Repositório de Consultas. STALE_QUERY_THRESHOLD_DAYS é do tipo bigint. O valor padrão é 30.
DATA_FLUSH_INTERVAL_SECONDS
Determina a frequência na qual os dados gravados no Repositório de Consultas é persistida em disco. Para otimizar o desempenho, os dados coletados pelo Repositório de Consultas são gravados de maneira assíncrona no disco. A frequência em que essa transferência assíncrona ocorre é configurada usando o argumento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS é do tipo bigint. O valor padrão é 900 (15 min).
MAX_STORAGE_SIZE_MB
Determina o espaço emitido para o Repositório de Consultas. MAX_STORAGE_SIZE_MB é do tipo bigint. O valor padrão é 100 MB para SQL Server (SQL Server 2016 (13.x) ao SQL Server 2017 (14.x)). A partir do SQL Server 2019 (15.x), o valor padrão é 1.000 MB.
O limite MAX_STORAGE_SIZE_MB
não é imposto estritamente. O tamanho do armazenamento é verificado somente quando o Repositório de Consultas grava dados no disco. Esse intervalo é definido pela opção DATA_FLUSH_INTERVAL_SECONDS
ou pela opção da caixa de diálogo do Repositório de Consultas Management Studio, Intervalo de Liberação de Dados. O valor padrão do intervalo é de 900 segundos (ou 15 minutos).
Se o Repositório de Consultas tiver violado o limite de MAX_STORAGE_SIZE_MB
entre verificações de tamanho de armazenamento, ele fará a transição para o modo somente leitura. Se o SIZE_BASED_CLEANUP_MODE
estiver habilitado, o mecanismo de limpeza que impõe o limite MAX_STORAGE_SIZE_MB
também será disparado.
Depois que espaço suficiente tiver sido limpo, o modo repositório de consultas alterna automaticamente para leitura-gravação.
Importante
Se você acha que sua captura de carga de trabalho precisa de mais de 10 GB de espaço em disco, você provavelmente deve repensar e otimizar sua carga de trabalho para reutilizar planos de consulta (por exemplo, usando de parametrização forçada ou ajustar as configurações do Repositório de Consultas.
Começando com SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, você poderá definir QUERY_CAPTURE_MODE
como CUSTOM para controle adicional sobre a política de captura de consulta.
INTERVAL_LENGTH_MINUTES
Determina o intervalo de tempo em que os dados de estatísticas de execução do runtime são agregados no Repositório de Consultas. Para otimizar o uso de espaço, as estatísticas de execução de runtime no repositório de estatísticas de runtime são agregadas em uma janela de tempo fixo. Essa janela de tempo fixo é configurada usando o argumento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES é do tipo bigint. O valor padrão é 60.
SIZE_BASED_CLEANUP_MODE { AUTO | OFF }
Controla se a limpeza será ativada automaticamente quando a quantidade total de dados se aproximar do tamanho máximo.
AUTO
A limpeza baseada em tamanho é ativada automaticamente quando o tamanho no disco atinge 90% de MAX_STORAGE_SIZE_MB. Limpeza com base no tamanho remove as consultas menos dispendiosas e mais antigas primeiro. Ele para a aproximadamente 80% do MAX_STORAGE_SIZE_MB. Esse valor é o valor de configuração padrão.
OFF
A limpeza baseada em tamanho não é ativada automaticamente.
SIZE_BASED_CLEANUP_MODE é do tipo nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }
Designa o modo de captura da consulta ativa no momento. Cada modo define políticas de captura de consulta específicas. QUERY_CAPTURE_MODE é do tipo nvarchar.
Observação
Cursores, consultas dentro de procedimentos armazenados e consultas compiladas nativamente são sempre capturados quando o modo de captura de consulta é definido como ALL, AUTO ou CUSTOM.
ALL
Captura todas as consultas. ALL é o valor de configuração padrão de SQL Server (SQL Server 2016 (13.x) ao SQL Server 2017 (14.x)).
AUTO
Captura as consultas relevantes baseadas na contagem de execução e no consumo de recursos. Esse é o valor de configuração padrão de SQL Server (no SQL Server 2019 (15.x) em diante) e Banco de Dados SQL do Azure.
Nenhuma
Pare de capturar novas consultas. O Repositório de Consultas continua coletando estatísticas de compilação e runtime para consultas que já foram capturadas. Use essa configuração com cuidado, pois você pode perder a captura de consultas importantes.
CUSTOM
Aplica-se ao: SQL Server (Começando pelo SQL Server 2019 (15.x))
Permite o controle sobre as opções de QUERY_CAPTURE_POLICY. As políticas de captura personalizadas podem ajudar Repositório de Consultas a capturar as consultas mais importantes em sua carga de trabalho. Consulte o <query_capture_policy_option_list> para opções personalizáveis.
max_plans_per_query
Define o número máximo de planos mantidos para cada consulta. MAX_PLANS_PER_QUERY é do tipo int. O valor padrão é 200.
WAIT_STATS_CAPTURE_MODE { ON | OFF }
Aplica-se ao: SQL Server (Começando com SQL Server 2017 (14.x)))
Controla se as estatísticas de espera são capturadas por consulta.
ATIVADO
As informações de estatísticas de espera por consulta são capturadas. Esse valor é o valor de configuração padrão.
OFF
As informações de estatísticas de espera por consulta não são capturadas.
<query_capture_policy_option_list> :: =
Aplica-se ao: SQL Server (Começando pelo SQL Server 2019 (15.x))
Controla as opções da política de captura do Repositório de Consultas. Exceto para STALE_CAPTURE_POLICY_THRESHOLD, essas opções definem as condições OR que precisam ocorrer para que as consultas sejam capturadas no valor de Limite da Política de Captura Obsoleta definido.
A partir do SQL Server 2019 (15.x), a QUERY_CAPTURE_MODE = AUTO
configuração captura detalhes do Repositório de Consultas quando qualquer um dos seguintes limites é atingido:
- EXECUTION_COUNT = 30 execuções = contagem de execução
- TOTAL_COMPILE_CPU_TIME_MS = 1 segundo = tempo de compilação em milissegundos
- TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = tempo de CPU de execução em milissegundos
Por exemplo:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Você pode personalizar essas opções com QUERY_CAPTURE_MODE = CUSTOM
:
STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }
Define o período de intervalo de avaliação para determinar se uma consulta deve ser capturada. O padrão é um dia e pode ser definido de uma hora a sete dias.
EXECUTION_COUNT = integer
Define o número de vezes que uma consulta é executada durante o período de avaliação. O padrão é 30, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ser executada, pelo menos, 30 vezes em um dia para ser persistente no Repositório de Consultas. EXECUTION_COUNT é do tipo int.
TOTAL_COMPILE_CPU_TIME_MS = integer
Define o tempo total decorrido da CPU de compilação usado por uma consulta durante o período de avaliação. O padrão é 1.000, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ter um total de, pelo menos, um segundo do tempo da CPU gasto durante a compilação da consulta em um dia para ser persistente no Repositório de Consultas. TOTAL_COMPILE_CPU_TIME_MS é do tipo int.
TOTAL_EXECUTION_CPU_TIME_MS = integer
Define o tempo total decorrido da CPU de execução usado por uma consulta durante o período de avaliação. O padrão é 100, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ter um total de, pelo menos, 100 ms do tempo da CPU gasto durante a execução em um dia para ser persistente no Repositório de Consultas. TOTAL_EXECUTION_CPU_TIME_MS é do tipo int.
<recovery_option> ::=
Aplica-se ao: SQL Server
Controla as opções de recuperação de banco de dados e a verificação de erros de E/S de disco.
FULL
Fornece recuperação completa depois de falha de mídia usando backups do log de transação. Se um arquivo de dados for danificado, a recuperação de mídia poderá recuperar todas as transações confirmadas. Para obter mais informações, consulte Modelos de recuperação.
BULK_LOGGED
Fornece recuperação após a falha de mídia. Combina o melhor desempenho e a menor quantidade de espaço de log de uso em larga escala para determinados ou operações em massa. Para obter informações sobre quais operações podem ser minimamente registradas, consulte O log de transações. No modelo de recuperação BULK_LOGGED, o registro para essas operações é mínimo. Para obter mais informações, consulte Modelos de recuperação.
SIMPLES
Uma estratégia simples de backup que usa um espaço de log mínimo é fornecida. O espaço de log poderá ser reutilizado automaticamente quando não for mais necessário à recuperação de falha de servidor. Para obter mais informações, consulte Modelos de recuperação.
Importante
O modelo de recuperação simples é mais fácil de gerenciar que os outros dois modelos, mas às custas de uma exposição maior à perda de dados se um arquivo de dados for danificado. Todas as alterações desde o backup mais recente do banco de dados ou diferencial serão perdidas e terão que ser reinseridas manualmente.
O modelo de recuperação padrão é determinado pelo modelo de recuperação do banco de dados do sistema model
. Para obter mais informações sobre como selecionar o modelo de recuperação apropriado, consulte Modelos de recuperação.
Você pode determinar o status dessa opção examinando as colunas recovery_model
e recovery_model_desc
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade Recovery
da função DATABASEPROPERTYEX.
TORN_PAGE_DETECTION { ON | OFF }
ATIVADO
Páginas incompletas podem ser detectadas pelo Mecanismo de Banco de Dados.
OFF
Páginas incompletas não podem ser detectadas pelo Mecanismo de Banco de Dados.
Importante
A estrutura de sintaxe TORN_PAGE_DETECTION ON | OFF será removida em uma versão futura do SQL Server. Evite usar essa estrutura de sintaxe em novos trabalhos de desenvolvimentos e planeje modificar os aplicativos que a utilizam atualmente. Use a opção PAGE_VERIFY em seu lugar.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
Descobre páginas de banco de dados danificadas por erros de caminho de E/S do disco. Erros de caminho de E/S de disco podem ser a causa dos problemas de banco de dados corrompido. Esses erros são causados frequentemente por falhas de energia ou falhas de hardware de disco que ocorrem no momento em que a página é gravada no disco.
CHECKSUM
Calcula uma soma de verificação com base no conteúdo da página inteira e armazena o valor no cabeçalho da página quando a página é gravada em disco. Quando a página é lida pelo disco, a soma de verificação é recalculada e comparada ao valor da soma de verificação armazenado no cabeçalho da página. Se os valores não forem correspondentes, a mensagem de erro 824 (indicando uma falha na soma de verificação) será informada no log de erros do SQL Server e no log de eventos do Windows. Uma falha de soma de verificação indica um problema no caminho de E/S. Para determinar a causa principal, é necessária uma inspeção de hardware, drivers de firmware, BIOS, drivers de filtro (como software antivírus) e outros componentes de caminho de E/S.
TORN_PAGE_DETECTION
Salva um padrão específico de 2 bits para cada setor de 512 bytes na página de banco de dados de 8 quilobytes (KB) e o armazena no cabeçalho da página do banco de dados quando a página é gravada em disco. Quando a página for lida pelo disco, os bits desativados armazenados no cabeçalho da página serão comparados às informações do setor da página real.
Valores não correspondentes indicam que apenas parte da página foi gravada em disco. Nessa situação, a mensagem de erro 824 (indicando um erro de página interrompida) é informada no log de erros do SQL Server e no log de eventos do Windows. Páginas interrompidas serão detectadas normalmente através da recuperação de banco de dados se realmente for uma gravação incompleta de uma página. Entretanto, outras falhas de caminho de E/S podem gerar uma página interrompida a qualquer momento.
Nenhuma
As gravações da página do banco de dados não geram um valor CHECKSUM ou TORN_PAGE_DETECTION. O SQL Server não verifica uma soma de verificação ou uma página rasgada durante uma leitura, mesmo se um valor CHECKSUM ou TORN_PAGE_DETECTION estiver presente no cabeçalho da página.
Considere os seguintes pontos importantes ao usar a opção PAGE_VERIFY:
O padrão é CHECKSUM.
Quando um banco de dados do sistema ou de usuário é atualizado para o SQL Server 2005 (9.x) ou uma versão posterior, o valor de PAGE_VERIFY (NONE ou TORN_PAGE_DETECTION) não é alterado. Recomendamos que você altere-o para CHECKSUM.
Observação
Em versões anteriores do SQL Server, a opção de banco de dados PAGE_VERIFY é definida como NONE para o banco de dados
tempdb
e não pode ser modificada. A partir do SQL Server 2008 (10.0.x), o valor padrão do banco de dadostempdb
é CHECKSUM para novas instalações do SQL Server. Ao atualizar uma instalação do SQL Server, o valor padrão permanece como NONE. A opção pode ser modificada. É recomendável usar CHECKSUM para o banco de dadostempdb
.TORN_PAGE_DETECTION pode usar menos recursos, mas fornece um subconjunto mínimo da proteção CHECKSUM.
PAGE_VERIFY pode ser definido sem que o banco de dados fique offline, seja bloqueado ou a simultaneidade de usuário seja impedida nele.
CHECKSUM é mutuamente exclusivo com TORN_PAGE_DETECTION. As duas opções não podem ser habilitadas ao mesmo tempo.
Quando a falha em uma página interrompida ou soma de verificação é detectada, é possível recuperá-las restaurando os dados ou recriando o índice se a falha estiver limitada apenas a páginas de índice. Se você encontrar uma falha de soma de verificação, para determinar o tipo de página de banco de dados ou páginas afetadas, execute DBCC CHECKDB. Para saber mais sobre as opções de restauração, veja Argumentos de RESTORE. Embora a restauração dos dados resolva o problema de corrupção de dados, a causa raiz (por exemplo, falha de hardware de disco) deve ser diagnosticada e corrigida o mais rápido possível para evitar erros contínuos.
O SQL Server tenta novamente qualquer leitura que falha com uma soma de verificação, uma página rasgada ou outro erro de E/S quatro vezes. Se a leitura for bem-sucedida em qualquer uma das tentativas de repetição, uma mensagem será gravada no log de erros. O comando que disparou a leitura continua. O comando falhará com a mensagem de erro 824 se as tentativas de repetição falharem.
Para obter mais informações sobre mensagens de erro 823, 824 e 825, veja:
- Solucionar problemas do erro MSSQLSERVER 823
- Solucionar problemas do erro MSSQLSERVER 824
- Solucionar problemas do erro MSSQLSERVER 825 (repetição de leitura).
A configuração atual dessa opção pode ser determinada por meio de um exame da coluna page_verify_option
na exibição de catálogo sys.databases ou da propriedade IsTornPageDetectionEnabled
da função DATABASEPROPERTYEX.
<remote_data_archive_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2016 (13.x))
Habilita ou desabilita o Stretch Database para o banco de dados. Para obter mais informações, consulte Stretch Database.
Importante
O banco de dados de ampliação foi preterido no SQL Server 2022 (16.x) e no Banco de Dados SQL do Azure. Esse recurso será removido em uma versão futura do mecanismo de banco de dados. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ON | OFF } ) | OFF
ATIVADO
Habilita o Stretch Database para o banco de dados. Para obter mais informações, incluindo os pré-requisitos adicionais, veja Habilitar o Stretch Database para um banco de dados.
Exige a permissão
db_owner
para habilitar o Stretch Database em uma tabela. Exige as permissõesdb_owner
eCONTROL DATABASE
para habilitar o Stretch Database em um banco de dados.SERVER = <server_name>
Especifica o endereço do servidor do Azure. Inclua a parte
.database.windows.net
do nome. Por exemplo,MyStretchDatabaseServer.database.windows.net
.CREDENTIAL = <db_scoped_credential_name>
Especifica a credencial no escopo do banco de dados que a instância do SQL Server usa para se conectar ao servidor do Azure. Verifique se que a credencial existe antes de executar esse comando. Para saber mais, confira CREATE DATABASE SCOPED CREDENTIAL.
FEDERATED_SERVICE_ACCOUNT = { ON | OFF }
Você poderá usar uma conta de serviço federada para o SQL Server local se comunicar com o servidor remoto do Azure quando todas as condições a seguir forem verdadeiras.
- A conta do serviço na qual a instância do SQL Server está sendo executada é uma conta de domínio.
- A conta de domínio pertence a um domínio cujo Active Directory é federado com a ID do Microsoft Entra.
- O servidor remoto do Azure está configurado para permitir a autenticação do Microsoft Entra.
- A conta de serviço na qual a instância do SQL Server está sendo executada deve ser configurada como uma conta
dbmanager
ousysadmin
no servidor remoto do Azure.
Se você especificar que a conta de serviço federada está ON, você também não poderá especificar o argumento CREDENTIAL. Forneça o argumento CREDENTIAL se você especificar OFF.
OFF
Desabilita o Stretch Database para o banco de dados. Para obter mais informações, consulte Desabilitar Stretch Database e trazer de volta dados remotos.
Você só pode desabilitar o Stretch Database para um banco de dados depois que o banco de dados não contiver nenhuma tabela habilitada para o Stretch Database. Depois de desabilitar o Stretch Database, interrompa a migração de dados. Além disso, os resultados da consulta não incluem mais resultados de tabelas remotas.
Desabilitar Stretch Database não remove o banco de dados remoto. Para excluir o banco de dados remoto, remova-o usando o portal do Azure.
PERSISTENT_LOG_BUFFER
aplica-se a: SQL Server 2017 (14.x) e posterior.
Quando essa opção é especificada, o buffer de log de transações é criado em um volume localizado em um dispositivo de disco com suporte da Memória de Classe de Armazenamento (NVDIMM-N armazenamento nãovolatile), também conhecido como um buffer de log persistente. Para obter mais informações, consulte aceleração de latência de Confirmação de Transação usando o de Memória da Classe de Armazenamento e Adicionar buffer de log persistente a um banco de dados.
<service_broker_option> ::=
Aplica-se ao: SQL Server
Controla as seguintes opções do Agente de Serviço: habilita ou desabilita a entrega de mensagens, define um novo identificador do Agente de Serviço ou define as prioridades de conversa como ON ou OFF.
ENABLE_BROKER
Especifica que o Agente de Serviço está habilitado para o banco de dados especificado. A entrega da mensagem é iniciada e o sinalizador is_broker_enabled
é definido como verdadeiro na exibição do catálogo sys.databases. O banco de dados mantém o identificador Agente de Serviço existente. O Service Broker não pode ser habilitado quando o banco de dados é a entidade de segurança em uma configuração de espelhamento de banco de dados.
Observação
ENABLE_BROKER requer um bloqueio de banco de dados exclusivo. Se outras sessões tiverem bloqueado recursos no banco de dados, ENABLE_BROKER aguardará até que as outras sessões liberem seus bloqueios. Para habilitar o Agente de Serviço em um banco de dados de usuário, verifique se nenhuma outra sessão está usando o banco de dados antes de executar a instrução ALTER DATABASE SET ENABLE_BROKER
, por exemplo, colocando o banco de dados no modo de usuário único. Para habilitar o Agente de Serviço no banco de dados msdb
, primeiro interrompe o SQL Server Agent para que o Agente de Serviço possa obter o bloqueio necessário.
DISABLE_BROKER
Especifica que o Agente de Serviço está desabilitado para o banco de dados especificado. A entrega da mensagem é interrompida e o sinalizador is_broker_enabled
é definido como falso na exibição do catálogo sys.databases. O banco de dados mantém o identificador Agente de Serviço existente.
NEW_BROKER
Especifica que o banco de dados deve receber um novo identificador do Broker. O banco de dados atua como um novo service broker. Dessa forma, todas as conversas existentes no banco de dados são imediatamente removidas sem produzir mensagens de caixa de diálogo de término. Qualquer rota que referencia o antigo identificador do Agente de Serviço deve ser recriada novamente com o novo identificador.
ERROR_BROKER_CONVERSATIONS
Especifica que a entrega de mensagens do Agente de Serviço está habilitada. Essa configuração preserva o identificador Agente de Serviço existente para o banco de dados. Agente de Serviço termina todas as conversas no banco de dados com um erro. Essa configuração permite que os aplicativos executem a limpeza regular das conversas existentes.
HONOR_BROKER_PRIORITY { ON | OFF }
ATIVADO
As operações de envio levam em conta os níveis de prioridade atribuídos às conversas. As mensagens de conversas com altos níveis de prioridade são enviadas antes das mensagens de conversas com baixos níveis de prioridade atribuídos.
OFF
As operações de envio são executadas como se todas as conversas tivessem o nível de prioridade padrão.
As alterações na opção HONOR_BROKER_PRIORITY entram em vigor imediatamente para os novos diálogos ou diálogos que não tenham mensagens esperando para serem enviadas. As caixas de diálogo com mensagens a serem enviadas quando ALTER DATABASE for executado não captam a nova configuração até que algumas das mensagens da caixa de diálogo sejam enviadas. O tempo necessário para que todas as caixas de diálogo comecem a usar a nova configuração pode variar consideravelmente.
A configuração atual dessa propriedade é relatada na coluna is_broker_priority_honored
na exibição de catálogo sys.databases.
<snapshot_option> ::=
Calcula o nível de isolamento da transação.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
ATIVADO
Habilita a opção de Instantâneo no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usar Isolamento de Instantâneo. Quando essa opção está habilitada, as transações podem especificar o nível de isolamento da transação SNAPSHOT. Ao executar uma transação no nível de isolamento SNAPSHOT, todas as instruções consultam um instantâneo de dados, se houver um no início da instrução. Se uma transação que executa no nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definido como ON em todos os bancos de dados ou cada instrução na transação deverá usar dicas de bloqueio em qualquer referência em uma cláusula FROM para uma tabela em um banco de dados onde ALLOW_SNAPSHOT_ISOLATION seja OFF.
OFF
Desativa a opção de Instantâneo no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.
Ao definir ALLOW_SNAPSHOT_ISOLATION para um novo estado (de ON para OFF ou de OFF para ON), ALTER DATABASE não retorna o controle para o chamador até que todas as transações existentes no banco de dados sejam confirmadas. Se o banco de dados já estiver no estado especificado na instrução ALTER DATABASE, o controle será retornado ao chamador imediatamente. Se a instrução ALTER DATABASE não for retornada rapidamente, use sys.dm_tran_active_snapshot_database_transactions para determinar se há transações de longa duração. Se a instrução ALTER DATABASE for cancelada, o banco de dados permanecerá no estado que estava quando ALTER DATABASE foi iniciada. A exibição do catálogo sys.databases indica o estado de transações de isolamento de instantâneo no banco de dados. Se snapshot_isolation_state_desc
= IN_TRANSITION_TO_ON, o comando ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
pausa seis segundos e repete a operação.
Não será possível alterar o estado de ALLOW_SNAPSHOT_ISOLATION se o banco de dados for OFFLINE.
Se você definir ALLOW_SNAPSHOT_ISOLATION em um banco de dados READ_ONLY, a configuração será mantida se o banco de dados for definido posteriormente como READ_WRITE.
É possível alterar as configurações ALLOW_SNAPSHOT_ISOLATION para os bancos de dados master
, model
, msdb
e tempdb
. A configuração é mantida sempre que a instância do Mecanismo de Banco de Dados é interrompida e reiniciada se você altera a configuração para tempdb
. Se você alterar a configuração para model
, ela se tornará o padrão para qualquer novo banco de dados que for criado, exceto o tempdb
.
Por padrão, a opção é ON para os bancos de dados master
e msdb
.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna snapshot_isolation_state
na exibição de catálogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
ATIVADO
Habilita a opção de Instantâneo de Leitura Confirmada no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usar Isolamento de Instantâneo. Quando essa opção está habilitada, as transações que especificam o nível de isolamento de leitura confirmada usam o controle de versão de linha, em vez de bloqueio. Todas as instruções consultam um instantâneo de dados, se houver um no início da instrução quando uma transação é executada no nível de isolamento READ COMMITTED.
OFF
Desabilita a opção de Instantâneo de Leitura Confirmada no nível do banco de dados. As transações que especificam o nível de isolamento READ COMMITTED usam bloqueio.
Para definir READ_COMMITTED_SNAPSHOT como ON ou OFF, não deve haver nenhuma conexão ativa com o banco de dados, exceto para a que está executando o comando ALTER DATABASE. Entretanto, o banco de dados não precisa estar no modo de usuário único. Não é possível alterar o estado dessa opção quando o banco de dados for OFFLINE.
Se você definir READ_COMMITTED_SNAPSHOT em um banco de dados READ_ONLY, a configuração será mantida quando o banco de dados for definido posteriormente como READ_WRITE.
READ_COMMITTED_SNAPSHOT não pode ser ativado para os bancos de dados do sistema master
, tempdb
ou msdb
. Se você alterar a configuração para model
, ela se tornará o padrão para qualquer novo banco de dados criado, exceto para tempdb
.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_read_committed_snapshot_on
na exibição de catálogo sys.databases.
Aviso
Quando uma tabela é criada com DURABILITY = SCHEMA_ONLYe READ_COMMITTED_SNAPSHOT é posteriormente alterada usando ALTER DATABASE, os dados na tabela são perdidos.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
Aplica-se ao: SQL Server (Começando pelo SQL Server 2014 (12.x))
ATIVADO
Quando o nível de isolamento da transação é definido com qualquer nível de isolamento inferior a SNAPSHOT, todas as operações Transact-SQL interpretadas em tabelas com otimização de memória são executadas no isolamento de SNAPSHOT. Exemplos de níveis de isolamento inferiores ao snapshot são READ COMMITTED ou READ UNCOMMITTED. Essas operações são executadas não importa se o nível de isolamento da transação é definido explicitamente no nível de sessão ou se a opção é usada implicitamente.
OFF
Não eleva o nível de isolamento da transação para operações interpretadas do Transact-SQL em tabelas com otimização de memória.
Não será possível alterar o estado de MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se o banco de dados for OFFLINE.
A opção padrão é OFF.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_memory_optimized_elevate_to_snapshot_on
na exibição de catálogo sys.databases.
<sql_option> ::=
Controla as opções de conformidade ANSI no nível de banco de dados.
ANSI_NULL_DEFAULT { ON | OFF }
Determina o valor padrão, NULL ou NOT NULL, de uma coluna ou um tipo CLR definido pelo usuário para o qual a nulidade não é definida explicitamente nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem regras de restrição, independentemente de essa configuração.
ATIVADO
O valor padrão de uma coluna indefinida é NULL.
OFF
O valor padrão de uma coluna indefinida NOT NULL.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULL_DEFAULT. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_NULL_DEFAULT como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_NULL_DFLT_ON.
Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o banco de dados padrão para NULL.
Você pode determinar o status dessa opção examinando a coluna is_ansi_null_default_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiNullDefault
da função DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
ATIVADO
Todas as comparações com um valor nulo são avaliadas como UNKNOWN.
OFF
As comparações de valores não Unicode com um valor nulo são avaliadas como TRUE se ambos os valores forem NULL.
Importante
Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULLS. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_NULLS como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_NULLS.
Importante
SET ANSI_NULLS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção examinando a coluna is_ansi_nulls_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiNullsEnabled
da função DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
ATIVADO
As cadeias de caracteres são preenchidas com a mesma largura antes da conversão. Também são preenchidas com o mesmo comprimento antes de inserir para um tipo de dados varchar ou nvarchar.
OFF
Insere espaços em branco à direita em valores de caractere em colunas varchar ou nvarchar. Também deixa zeros à direita em valores binários inseridos nas colunas varbinary. Os valores não são preenchidos com o tamanho da coluna.
Quando OFF é especificado, essa configuração afeta apenas a definição de novas colunas.
Importante
Em uma versão futura do SQL Server, ANSI_PADDING sempre será ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. É recomendável sempre definir ANSI_PADDING como ON. ANSI_PADDING deve ser ON ao criar ou manipular índices em colunas computadas ou exibições indexadas.
Colunas char(n) e binary(n) que permitem valores nulos são preenchidas até o comprimento da coluna quando ANSI_PADDING está definido como ON. Espaços em branco e zeros à direita são cortados quando ANSI_PADDING está OFF. As colunas char(n) e binary(n) que não permitem valores nulos sempre são preenchidas até o tamanho da coluna.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_PADDING. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_PADDING como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_PADDING.
Você pode determinar o status dessa opção examinando a coluna is_ansi_padding_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiPaddingEnabled
da função DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
ATIVADO
Erros ou avisos são emitidos quando ocorrem condições como divisão por zero. Erros e avisos também são emitidos quando valores nulos aparecerem em funções de agregação.
OFF
Nenhum aviso é emitido e os valores nulos são retornados quando condições como “dividir por zero” ocorrem.
Importante
SET ANSI_WARNINGS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_WARNINGS. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_WARNINGS como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_PADDING.
Você pode determinar o status dessa opção examinando a coluna is_ansi_warnings_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiWarningsEnabled
da função DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
ATIVADO
Uma consulta é encerrada quando ocorre um estouro ou erro de divisão por zero durante a execução da consulta.
OFF
Uma mensagem de aviso é exibida quando um desses erros ocorre. A consulta, o lote ou a transação continuará sendo processado como se nenhum erro tivesse ocorrido, mesmo que um aviso seja exibido.
Importante
SET ARITHABORT também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção examinando a coluna is_arithabort_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsArithmeticAbortEnabled
da função DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Para obter mais informações, consulte nível de compatibilidade ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | OFF }
ATIVADO
O resultado de uma operação de concatenação será NULL quando qualquer operando for NULL. Por exemplo, concatenar a cadeia de caracteres "This is" e NULL retorna o valor NULL, em vez do valor "This is".
OFF
O valor nulo é tratado como uma cadeia de caracteres vazia.
Importante
CONCAT_NULL_YIELDS_NULL deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Em versões futuras do SQL Server, CONCAT_NULL_YIELDS_NULL sempre estará ON e eventuais aplicativos que definam explicitamente a opção como OFF dispararão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para CONCAT_NULL_YIELDS_NULL. Por padrão, clientes ODBC e OLE DB emitem uma configuração CONCAT_NULL_YIELDS_NULL de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para saber mais, confira SET CONCAT_NULL_YIELDS_NULL.
Você pode determinar o status dessa opção examinando a coluna is_concat_null_yields_null_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsNullConcat
da função DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
ATIVADO
Um erro é gerado quando ocorre perda de precisão em uma expressão.
OFF
A perda de precisão não gera uma mensagem de erro e o resultado é arredondado para a precisão da coluna ou da variável que armazena o resultado.
Importante
NUMERIC_ROUNDABORT deve ser definido como OFF ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção na coluna is_numeric_roundabort_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsNumericRoundAbortEnabled
da função DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
ATIVADO
As aspas duplas podem ser utilizadas para conter identificadores delimitados.
Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores entre aspas não precisam seguir as regras Transact-SQL para identificadores. Eles podem ser palavras-chave e incluir caracteres não permitidos nos identificadores Transact-SQL. Se uma aspa dupla (
"
) fizer parte do identificador, ela poderá ser representada por duas aspas duplas (""
).OFF
Os identificadores não podem estar entre aspas e precisam seguir todas as regras do Transact-SQL para identificadores. Literais podem ser delimitados por aspas simples ou duplas.
O SQL Server também permite que os identificadores sejam delimitados por colchetes ([
e ]
). Identificadores entre colchetes sempre podem ser usados, seja qual for a configuração QUOTED_IDENTIFIER. Para obter mais informações, consulte identificadores de banco de dados.
Quando uma tabela é criada, a opção QUOTED IDENTIFIER sempre é armazenada como ON nos metadados da tabela. A opção é armazenada mesmo que seja definida como OFF quando a tabela é criada.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para QUOTED_IDENTIFIER. Clientes ODBC e OLE DB emitem uma instrução SET no nível de conexão configurando QUOTED_IDENTIFIER como ON por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET QUOTED_IDENTIFIER.
Você pode determinar o status dessa opção examinando a coluna is_quoted_identifier_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsQuotedIdentifiersEnabled
da função DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
ATIVADO
O disparo recursivo de gatilhos AFTER é permitido.
OFF
Você pode determinar o status dessa opção examinando a coluna
is_recursive_triggers_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedadeIsRecursiveTriggersEnabled
da função DATABASEPROPERTYEX.
Observação
Somente a recursão direta será evitada quando RECURSIVE_TRIGGERS estiver definido como OFF. Para desabilitar a recursão indireta, é necessário definir também a opção do servidor nested triggers como 0.
Você pode determinar o status dessa opção examinando a coluna is_recursive_triggers_on
na exibição de catálogo sys.databases ou a propriedade IsRecursiveTriggersEnabled
da função DATABASEPROPERTYEX.
<suspend_for_snapshot_backup> ::=
Aplica-se a: SQL Server, a partir do SQL Server 2022 (16.x)
Suspende os bancos de dados do backup de instantâneo. Pode definir um grupo de um ou mais bancos de dados. Pode designar o modo somente cópia.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }
Suspende ou cancela a suspensão de bancos de dados. Padrão OFF.
MODE = COPY_ONLY
Opcional. Usa o modo COPY_ONLY.
<target_recovery_time_option> ::=
Aplica-se ao: SQL Server (Começando pelo SQL Server 2012 (11.x))
Especifica a frequência de pontos de verificação indiretos por banco de dados. A partir do SQL Server 2016 (13.x), o valor padrão para novos bancos de dados é de 1 minuto, o que indica que o banco de dados usa pontos de verificação indiretos. Para versões mais antigas, o padrão é 0, o que indica que o banco de dados usa pontos de verificação automáticos, cuja frequência depende da configuração do intervalo de recuperação da instância do servidor. Microsoft recomenda 1 minuto para a maioria dos sistemas.
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
target_recovery_time
Especifica o salto máximo no tempo para recuperar o banco de dados especificado no caso de uma falha. target_recovery_time é do tipo int.
SECONDS
Indica que target_recovery_time é expresso como o número de segundos.
MINUTES
Indica que target_recovery_time é expresso como o número de minutos.
Para obter mais informações sobre pontos de verificação indiretos, consulte pontos de verificação de banco de dados.
WITH <encerramento> ::=
Especifica quando reverter transações incompletas quando há transição do banco de dados de um estado para outro. Se a cláusula de término for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Somente uma cláusula de término pode ser especificada e ela sucede as cláusulas SET.
Observação
Nem todas as opções de banco de dados usam a cláusula de <encerramento> WITH. Para saber mais, confira a tabela em Opções de configuração na seção "Comentários" deste artigo.
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Especifica se a reversão deve ser feita após o número de segundos especificado ou imediatamente.
NO_WAIT
Especifica que a solicitação falhará se o estado do banco de dados solicitado ou a alteração de opção não puder ser concluída imediatamente. Concluir imediatamente significa não esperar a confirmação ou a reversão das transações por conta própria.
Opções Set
Para recuperar as configurações atuais das opções de banco de dados, use a exibição do catálogo sys.databases ou DATABASEPROPERTYEX
Depois de definir uma opção de banco de dados, a nova configuração entra em vigor imediatamente.
Você pode alterar os valores padrão para qualquer uma das opções de banco de dados para todos os bancos de dados recém-criados. Para fazer isso, altere a opção de banco de dados apropriada no banco de dados model
.
Nem todas as opções de banco de dados usam a cláusula de <encerramento> WITH ou podem ser especificadas em combinação com outras opções. A tabela a seguir lista essas opções e seu status de opção e término.
Categoria de opções | Pode ser especificado com outras opções | Pode usar a cláusula de <encerramento> WITH |
---|---|---|
<db_state_option> | Sim | Sim |
<db_user_access_option> | Sim | Sim |
<db_update_option> | Sim | Sim |
<delayed_durability_option> | Sim | Sim |
<external_access_option> | Sim | Não |
<cursor_option> | Sim | Não |
<auto_option> | Sim | Não |
<sql_option> | Sim | Não |
<recovery_option> | Sim | Não |
<target_recovery_time_option> | Não | Sim |
<database_mirroring_option> | Não | Não |
ALLOW_SNAPSHOT_ISOLATION | Não | Não |
READ_COMMITTED_SNAPSHOT | Não | Sim |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Sim | Sim |
<service_broker_option> | Sim | Não |
DATE_CORRELATION_OPTIMIZATION | Sim | Sim |
<parameterization_option> | Sim | Sim |
<change_tracking_option> | Sim | Sim |
<db_encryption_option> | Sim | Não |
<accelerated_database_recovery> | Sim | Sim |
O cache de planos da instância do SQL Server é limpo com a definição de uma das seguintes opções:
OFFLINE
ONLINE
MODIFY_NAME
COLLATE
READ_ONLY
READ_WRITE
MODIFY FILEGROUP DEFAULT
MODIFY FILEGROUP READ_WRITE
MODIFY FILEGROUP READ_ONLY
O cache de planos também é liberado nos cenários a seguir.
- Um banco de dados tem a opção de banco de dados AUTO_CLOSE definida como ON. Quando nenhuma conexão de usuário fizer referência ou usar o banco de dados, a tarefa de banco de dados tentará fechar e encerrar o banco de dados automaticamente.
- Execute diversas consultas em um banco de dados que tem opções padrão. O banco de dados é removido.
- Um instantâneo de banco de dados para um banco de dados de origem é removido.
- Você recria com sucesso o log de transação para um banco de dados.
- Você restaura um backup de banco de dados.
- Você desanexa um banco de dados.
A limpeza do cache de planos gera uma recompilação de todos os planos de execução subsequentes e pode provocar uma redução repentina e temporária do desempenho de consultas. Para cada armazenamento em cache limpo no cache de planos, o log de erros do SQL Server contém a seguinte mensagem informativa: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations
. Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja liberado dentro desse intervalo de tempo.
Exemplos
a. Configurar opções em um banco de dados
O exemplo a seguir define o modelo de recuperação e as opções de verificação de página de dados para o banco de dados de exemplo AdventureWorks2022
.
USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO
B. Definir o banco de dados como READ_ONLY
Alterar o estado de um banco de dados ou grupo de arquivos para READ_ONLY ou READ_WRITE requer acesso exclusivo ao banco de dados. O exemplo a seguir define o banco de dados como o modo SINGLE_USER
para obter acesso exclusivo. Em seguida, o exemplo define o estado do banco de dados AdventureWorks2022
como READ_ONLY
e retorna o acesso ao banco de dados para todos os usuários.
Observação
Este exemplo usa a opção de término WITH ROLLBACK IMMEDIATE
na primeira instrução ALTER DATABASE
. Todas as transações incompletas são revertidas e todas as outras conexões com o banco de dados AdventureWorks2022
são imediatamente desconectadas.
USE master;
GO
ALTER DATABASE [database_name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
C. Habilitar o isolamento de instantâneo em um banco de dados
O exemplo a seguir habilita a opção de estrutura de isolamento de instantâneo para o banco de dados AdventureWorks2022
.
USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
O conjunto de resultados mostra que a estrutura de isolamento de instantâneo está habilitada.
name | snapshot_isolation_state | descrição |
---|---|---|
[nome_do_banco_de_dados] | 1 | ATIVADO |
D. Habilitar, modificar ou desabilitar o controle de alterações
O exemplo a seguir habilita o controle de alterações no banco de dados AdventureWorks2022
e define o período de retenção para 2
dias.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
O exemplo a seguir mostra como alterar o período de retenção para 3
dias.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
O exemplo a seguir mostra como desabilitar o controle de alterações no banco de dados AdventureWorks2022
.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Habilitar o Repositório de Consultas
Aplica-se ao: SQL Server (Começando pelo SQL Server 2016 (13.x))
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
F. Habilitar o Repositório de Consultas com estatísticas de espera
Aplica-se ao: SQL Server (Começando pelo SQL Server 2017 (14.x))
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
);
G. Habilitar o Repositório de Consultas com opções personalizadas da política de captura
Aplica-se ao: SQL Server (Começando pelo SQL Server 2019 (15.x))
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Conteúdo relacionado
- Estatísticas
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- nível de compatibilidade ALTER DATABASE
- Espelhamento de banco de dados de ALTER DATABASE
- ALTER DATABASE SET HADR
- CREATE DATABASE
- habilitar e desabilitar o controle de alterações (SQL Server)
- drop database (Transact-SQL)
- DEFINIR O NÍVEL DE ISOLAMENTO DA TRANSAÇÃO (Transact-SQL)
- sp_configure
- práticas recomendadas para monitorar cargas de trabalho com o Repositório de Consultas
* Banco de Dados SQL *
Banco de Dados SQL
Os níveis de compatibilidade são SET
opções, mas são descritos no nível de compatibilidade ALTER DATABASE .
Observação
Muitas opções de definição de banco de dados podem ser configuradas para a sessão atual usando Instruções SET e são configuradas com frequência por aplicativos quando eles são conectados. As opções definidas no nível de sessão substituem os valores de ALTER DATABASE SET
. As opções de banco de dados descritas nas seções a seguir são valores que podem ser definidos para sessões que não fornecem explicitamente outros valores de opções de definição.
Sintaxe
ALTER DATABASE { database_name | Current }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
;
<option_spec> ::=
{
<auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
| AUTOMATIC_TUNING ( CREATE_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( DROP_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::= DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<termination>::=
{
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention>::=TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argumentos
database_name
O nome do banco de dados a ser modificado.
CURRENT
CURRENT
executa a ação no banco de dados atual.CURRENT
não é compatível com todas as opções em todos os contextos. SeCURRENT
falhar, forneça o nome do banco de dados.
<auto_option> ::=
Controla opções automáticas.
AUTO_CREATE_STATISTICS { ON | OFF }
ATIVADO
O otimizador de consulta cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar planos e desempenho de consulta. Estas estatísticas de coluna única são criadas quando o otimizador de consulta compila consultas. As estatísticas de coluna única só são criadas em colunas que ainda não são a primeira de um objeto de estatísticas existente.
O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
OFF
O otimizador de consulta não cria estatísticas em colunas únicas em predicados de consulta quando estiver compilando consultas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoCreateStatistics
da função DATABASEPROPERTYEX.
Para obter mais informações, confira a seção "Opções de estatísticas" em Estatísticas.
INCREMENTAL = ON | OFF
Defina AUTO_CREATE_STATISTICS como ON e INCREMENTAL como ON. Essa configuração cria estatísticas criadas automaticamente como incrementais sempre que há suporte para estatísticas incrementais. O valor padrão é OFF. Para saber mais, veja CREATE STATISTICS.
AUTO_SHRINK {ON | OFF}
ATIVADO
Os arquivos de banco de dados são candidatos à redução periódica. A menos que você tenha um requisito específico, não defina a opção AUTO_SHRINK banco de dados como ON. Para saber mais, confira Reduzir um banco de dados.
Arquivos de dados e arquivos de log podem ser reduzidos automaticamente. AUTO_SHRINK reduzirá o tamanho do log de transações somente se o banco de dados estiver definido como modelo de recuperação SIMPLE ou se o log tiver sido submetido a backup. Quando definido como OFF, os arquivos de banco de dados não são reduzidos automaticamente durante as verificações periódicas de espaço não utilizado.
A opção AUTO_SHRINK faz com que os arquivos sejam reduzidos quando mais que 25% do arquivo contém espaço não utilizado. A opção faz com que o arquivo diminua em um dos dois tamanhos. Ele reduz o que for maior:
- o tamanho em que 25% do arquivo é o espaço não utilizado
- o tamanho do arquivo quando ele foi criado
Não é possível reduzir um banco de dados somente leitura.
OFF
Os arquivos de banco de dados não são reduzidos automaticamente durante verificações periódicas de espaço não utilizado.
Você pode determinar o status dessa opção examinando a coluna is_auto_shrink_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoShrink
da função DATABASEPROPERTYEX.
Observação
A opção AUTO_SHRINK não está disponível em um banco de dados independente.
AUTO_UPDATE_STATISTICS { ON | OFF }
ATIVADO
Especifica que o otimizador de consulta atualiza as estatísticas quando elas são usadas por uma consulta e quando podem estar desatualizadas. As estatísticas ficam desatualizadas depois que operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou na exibição indexada. O otimizador de consulta determina quando estatísticas podem estar desatualizadas contando o número de modificações de dados desde a última atualização das estatísticas e comparando o número de modificações a um limite. O limite se baseia no número de linhas na tabela ou na exibição indexada.
O otimizador de consulta verifica se há estatísticas desatualizadas antes de compilar uma consulta e executa um plano de consulta armazenado em cache. O otimizador de consulta usa as colunas, as tabelas e as exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. O otimizador de consulta determina essas informações antes de compilar uma consulta. Antes de executar um plano de consulta em cache, o Mecanismo de Banco de Dados verifica se o plano de consulta faz referência a estatísticas atualizadas.
A opção AUTO_UPDATE_STATISTICS se aplica a estatísticas criadas para índices, colunas únicas em predicados de consulta, além de estatísticas criadas por meio da instrução CREATE STATISTICS. Essa opção também se aplica a estatísticas filtradas.
O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
Use a opção AUTO_UPDATE_STATISTICS_ASYNC para especificar se as estatísticas são atualizadas de forma síncrona ou assíncrona.
OFF
Especifica que o otimizador de consulta não atualiza as estatísticas quando elas são usadas por uma consulta. O otimizador de consulta também não atualiza estatísticas quando elas podem estar desatualizadas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Você pode determinar o status dessa opção examinando a coluna
is_auto_update_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedadeIsAutoUpdateStatistics
da função DATABASEPROPERTYEX.Para obter mais informações, confira a seção "Opções de estatísticas" em Estatísticas.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
ATIVADO
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O otimizador de consulta não aguarda a conclusão das atualizações de estatísticas para compilar consultas.
Definir essa opção como ON não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é definida como OFF e o otimizador de consulta atualiza estatísticas de forma síncrona.
OFF
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O otimizador de consulta aguarda a conclusão das atualizações de estatísticas para compilar consultas.
Definir essa opção como OFF não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_async_on
na exibição de catálogo sys.databases.
Para obter mais informações que descrevem quando usar as atualizações de estatísticas síncronas ou assíncronas, confira a seção "Opções de estatísticas" em Estatísticas.
<automatic_tuning_option> ::=
Controla as opções automáticas para o Ajuste automático. Você pode exibir as opções para as configurações a seguir no portal do Azure ou por meio de T-SQL na exibição sys.database_automatic_tuning_options
.
AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
AUTO
Definir o valor de ajuste automático para AUTO aplica os padrões de configuração do Azure para ajuste automático. No portal do Azure, isso reflete a opção para "Herdar de: padrões do Azure".
INHERIT
Ao usar o valor INHERIT, você herdará a configuração padrão do servidor pai. No portal do Azure, isso reflete a opção para "Herdar de: padrões do Server". Isso será útil principalmente se você quiser personalizar a configuração de Ajuste automático em um servidor pai e fazer com que todos os bancos de dados desse servidor herdem (INHERIT) essas configurações personalizadas. Para que a herança funcione, as três opções de ajuste individuais FORCE_LAST_GOOD_PLAN, CREATE_INDEX e DROP_INDEX precisam ser definidas como DEFAULT em bancos de dados.
CUSTOM
Usando o valor CUSTOM, você precisa configurar personalizadamente cada uma das opções de Ajuste Automático disponíveis em bancos de dados. No portal do Azure, isso reflete a opção para "Herdar de: Não herdar".
CREATE_INDEX = { DEFAULT | ON | OFF }
Habilita ou desabilita a opção CREATE_INDEX
de Ajuste automático do gerenciamento de índice automático. Você pode exibir o status dessa opção no portal do Azure ou via T-SQL na exibição sys.database_automatic_tuning_options
.
DEFAULT
Herda as configurações padrão do servidor. Nesse caso, as opções de habilitar ou desabilitar os recursos individuais de ajuste automático são definidas no nível do servidor.
ATIVADO
Quando habilitado, os índices ausentes são gerados de forma automática em um banco de dados. Após a criação do índice, os ganhos de desempenho da carga de trabalho são verificados. Quando o índice criado não oferecer mais benefícios para o desempenho da carga de trabalho, será automaticamente revertido. Os índices criados automaticamente são sinalizados como gerados pelo sistema.
OFF
Não gera índices ausentes de modo automático no banco de dados.
DROP_INDEX = { DEFAULT | ON | OFF }
Habilita ou desabilita a opção DROP_INDEX
de Ajuste automático do gerenciamento de índice automático. Você pode exibir o status dessa opção no portal do Azure ou via T-SQL na exibição sys.database_automatic_tuning_options
.
DEFAULT
Herda as configurações padrão do servidor. Nesse caso, as opções de habilitar ou desabilitar os recursos individuais de ajuste automático são definidas no nível do servidor.
ATIVADO
Remove automaticamente os índices duplicados ou que não são mais úteis da carga de trabalho de desempenho.
OFF
Não remove índices ausentes automaticamente no banco de dados.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }
Habilita ou desabilita a opção FORCE_LAST_GOOD_PLAN
de Ajuste automático da correção de plano automática. Você pode exibir o status dessa opção no portal do Azure ou via T-SQL na exibição sys.database_automatic_tuning_options
.
DEFAULT
Herda as configurações padrão do servidor. Nesse caso, as opções de habilitar ou desabilitar os recursos individuais de ajuste automático são definidas no nível do servidor. Esse é o valor padrão. O valor padrão para novos servidores SQL do Azure é ON, o que significa que, por padrão, novos bancos de dados herdam a configuração de ON.
ATIVADO
O Mecanismo de Banco de Dados força automaticamente o último plano válido conhecido nas consultas Transact-SQL, em que o novo plano de consulta causa regressões de desempenho. O Mecanismo de Banco de Dados monitora continuamente o desempenho de consultas da consulta Transact-SQL com o plano forçado. Se houver ganhos de desempenho, o Mecanismo de Banco de Dados continua usando o último plano válido conhecido. Se os ganhos de desempenho não forem detectados, o Mecanismo de Banco de Dados produzirá um novo plano de consulta. A instrução falhará se o Repositório de Consultas não estiver habilitado ou não estiver no modo leitura/gravação.
OFF
O Mecanismo de Banco de Dados relata possíveis regressões de desempenho de consulta causadas por alterações do plano de consulta na exibição sys.dm_db_tuning_recommendations. No entanto, essas recomendações não são aplicadas automaticamente. Os usuários podem monitorar recomendações ativas e corrigir problemas identificados aplicando scripts Transact-SQL mostrados na exibição.
<change_tracking_option> ::=
Controla as opções de controle de alterações. É possível habilitar o controle de alterações, definir opções, alterar opções e desabilitar o controle de alterações. Para obter exemplos, confira a seção Exemplos mais adiante neste artigo.
ATIVADO
Habilita o controle de alterações no banco de dados. Quando você habilita o controle de alterações, também pode definir as opções AUTO CLEANUP e CHANGE RETENTION.
AUTO_CLEANUP = { ON | OFF }
ATIVADO
As informações de controle de alterações são removidas automaticamente depois do período de retenção especificado.
OFF
Os dados de controle de alterações não são removidos do banco de dados.
CHANGE_RETENTION = período_de_retenção { DAYS | HOURS | MINUTES }
Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados serão removidos somente quando o valor AUTO_CLEANUP for ON.
retention_period é um inteiro que especifica o componente numérico do período de retenção.
O período de retenção padrão é de 2 dias. O período de retenção mínimo é de 1 minuto. O tipo de retenção padrão é DAYS.
OFF
Desabilita o controle de alterações no banco de dados. Desabilite o controle de alterações em todas as tabelas antes de desabilitá-lo no banco de dados.
<cursor_option> ::=
Controla opções de cursor.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
ATIVADO
Todos os cursores abertos quando você confirma ou reverte uma transação são fechados.
OFF
Os cursores permanecem abertos quando uma transação é confirmada; reverter uma transação fecha todos os cursores, exceto os cursores definidos como INSENSITIVE ou STATIC.
As configurações no nível de conexão que são definidas com o uso da instrução SET substituem a configuração de banco de dados padrão por CURSOR_CLOSE_ON_COMMIT. Clientes ODBC e OLE DB emitem uma configuração CURSOR_CLOSE_ON_COMMIT de instrução SET no nível de conexão como desativada para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET CURSOR_CLOSE_ON_COMMIT.
Você pode determinar o status dessa opção examinando a coluna is_cursor_close_on_commit_on
na exibição de catálogo sys.databases ou a propriedade IsCloseCursorsOnCommitEnabled
da função DATABASEPROPERTYEX. O cursor é implicitamente desalocado somente na desconexão. Para saber mais, confira DECLARE CURSOR.
<db_encryption_option> ::=
Controla o estado de criptografia do banco de dados.
ENCRYPTION { ON | OFF }
Define o banco de dados a ser criptografado (ON) ou não criptografado (OFF). Para obter mais informações sobre criptografia de banco de dados, consulte TDE (Transparent Data Encryption)e Transparent Data Encryption para o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Azure Synapse Analytics.
Quando a criptografia é habilitada no nível do banco de dados, todos os grupos de arquivos são criptografados. Todos os novos grupos de arquivos herdam a propriedade criptografada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia de banco de dados falhará.
É possível ver o estado da criptografia do banco de dados usando a exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.
<db_update_option> ::=
Controla se atualizações são permitidas no banco de dados.
READ_ONLY
Os usuários podem ler dados do banco de dados, mas não modificá-los.
Observação
Para melhorar o desempenho da consulta, atualize as estatísticas antes de configurar um banco de dados como READ_ONLY. Se forem necessárias estatísticas adicionais depois que um banco de dados for definido como READ_ONLY, o Mecanismo de Banco de Dados criará estatísticas em
tempdb
. Para obter mais informações sobre estatísticas para um banco de dados somente leitura, veja Estatísticas.READ_WRITE
O banco de dados está disponível para operações de leitura e gravação.
Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados. Para obter mais informações, consulte a cláusula SINGLE_USER.
Observação
Nos bancos de dados federados Banco de Dados SQL do Azure, SET { READ_ONLY | READ_WRITE }
está desabilitado.
<db_user_access_option> ::=
Controla o acesso de usuários ao banco de dados.
RESTRICTED_USER
Permite que apenas membros da função de banco de dados fixa
db_owner
e das funções de servidor fixasdbcreator
esysadmin
conectem-se ao banco de dados, mas não limita o seu número. Todas as conexões com o banco de dados são desconectadas no período especificado pela cláusula de término da instrução ALTER DATABASE. Depois que o banco de dados fizer a transição para o estado RESTRICTED_USER, as tentativas de conexão realizadas por usuários não qualificados serão recusadas. No Banco de Dados SQL do Azure, deve ser executado de dentro do banco de dados do usuário. No banco de dadosmaster
, você pode encontrar uma mensagem de erroMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
MULTI_USER
Todos os usuários com permissões apropriadas para se conectar ao banco de dados são permitidos. Você pode determinar o status dessa opção examinando a coluna
user_access
na exibição de catálogo sys.databases ou a propriedadeUserAccess
da função DATABASEPROPERTYEX. No Banco de Dados SQL do Azure, deve ser executado de dentro do banco de dados do usuário. No banco de dadosmaster
, você pode encontrar uma mensagem de erroMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
<delayed_durability_option> ::=
Controla se as transações são confirmadas completamente duráveis ou duráveis atrasadas.
DISABLED
Todas as transações após
SET DISABLED
são completamente duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou instrução de confirmação são ignoradas.ALLOWED
Todas as transações após
SET ALLOWED
são completamente duráveis ou duráveis atrasadas, dependendo da opção de durabilidade definida no bloco atômico ou na instrução de confirmação.FORCED
Todas as transações após
SET FORCED
são duráveis atrasadas. Todas as opções de durabilidade definidas em um bloco atômico ou instrução de confirmação são ignoradas.
<PARAMETERIZATION_option> ::=
Controla a opção de parametrização.
PARAMETERIZATION { SIMPLE | FORCED }
SIMPLES
As consultas são parametrizadas com base no comportamento padrão do banco de dados.
FORCED
O SQL Server parametriza todas as consultas feitas no banco de dados.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_parameterization_forced
na exibição de catálogo sys.databases.
<query_store_options> ::=
ON | OFF | CLEAR [ ALL ]
Controla se o Repositório de Consultas está habilitado neste banco de dados, além de controlar a remoção do conteúdo do Repositório de Consultas.
ATIVADO
Habilita o Repositório de Consultas. ON é o valor padrão.
OFF
Desabilita o Repositório de Consultas.
Observação
O Repositório de Consultas não pode ser desabilitado no banco de dados individual do Banco de Dados SQL do Azure e no Pool Elástico. Executar
ALTER DATABASE [database] SET QUERY_STORE = OFF
retorna o aviso'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.CLEAR
Remove o conteúdo do Repositório de Consultas.
OPERATION_MODE
Descreve o modo de operação do Repositório de Consultas. Os valores válidos são READ_ONLY e READ_WRITE. No modo READ_WRITE, o Repositório de Consultas coleta e persiste as informações de estatísticas de execução do runtime e do plano de consulta. No modo READ_ONLY, as informações podem ser lidas do repositório de consultas, mas novas informações não são adicionadas. Se o espaço alocado máximo do Repositório de Consultas tiver sido esgotado, o Repositório de Consultas alterará seu modo de operação para READ_ONLY.
CLEANUP_POLICY
Descreve a política de retenção de dados do Repositório de Consultas. STALE_QUERY_THRESHOLD_DAYS determina o número de dias durante os quais as informações de uma consulta são mantidas no Repositório de Consultas. STALE_QUERY_THRESHOLD_DAYS é do tipo bigint. O valor padrão é 30. Para o Banco de Dados SQL Basic Edition, o padrão é 7 dias.
DATA_FLUSH_INTERVAL_SECONDS
Determina a frequência na qual os dados gravados no Repositório de Consultas é persistida em disco. Para otimizar o desempenho, os dados coletados pelo Repositório de Consultas são gravados de maneira assíncrona no disco. A frequência em que essa transferência assíncrona ocorre é configurada usando o argumento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS é do tipo bigint. O valor padrão é 900 (15 min).
MAX_STORAGE_SIZE_MB
Determina o espaço alocado para o Repositório de Consultas. MAX_STORAGE_SIZE_MB é do tipo bigint.
Observação
No Banco de Dados SQL do Azure, o valor MAX_STORAGE_SIZE_MB
padrão difere por camada de serviço, da seguinte maneira: Premium, Comercialmente Crítico e Hiperescala: 1.024 MB; Standard e Uso Geral: 100 MB; Básico: 10 MB O valor MAX_STORAGE_SIZE_MB
máximo permitido é de 10.240 MB.
Observação
O limite MAX_STORAGE_SIZE_MB
não é imposto estritamente. O tamanho do armazenamento é verificado somente quando o Repositório de Consultas grava dados no disco. Esse intervalo é definido pela opção DATA_FLUSH_INTERVAL_SECONDS
ou pela opção da caixa de diálogo do Repositório de Consultas Management Studio, Intervalo de Liberação de Dados. O valor padrão do intervalo é de 900 segundos (ou 15 minutos).
Se o Repositório de Consultas tiver violado o limite de MAX_STORAGE_SIZE_MB
entre verificações de tamanho de armazenamento, ele fará a transição para o modo somente leitura. Se o SIZE_BASED_CLEANUP_MODE
estiver habilitado, o mecanismo de limpeza que impõe o limite MAX_STORAGE_SIZE_MB
também será disparado.
Depois que espaço suficiente tiver sido limpo, o modo repositório de consultas alterna automaticamente para leitura-gravação.
Importante
Se você acha que sua captura de carga de trabalho precisa de mais de 10 GB de espaço em disco, você provavelmente deve repensar e otimizar sua carga de trabalho para reutilizar planos de consulta (por exemplo, usando de parametrização forçada ou ajustar as configurações do Repositório de Consultas.
Começando com SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, você poderá definir QUERY_CAPTURE_MODE
como CUSTOM para controle adicional sobre a política de captura de consulta.
INTERVAL_LENGTH_MINUTES
Determina o intervalo de tempo em que os dados de estatísticas de execução do runtime são agregados no Repositório de Consultas. Para otimizar o uso de espaço, as estatísticas de execução de runtime no repositório de estatísticas de runtime são agregadas em uma janela de tempo fixo. Essa janela de tempo fixo é configurada usando o argumento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES é do tipo bigint. O valor padrão é 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
Controla se a limpeza é ativada automaticamente quando a quantidade total de dados fica próxima do tamanho máximo.
OFF
A limpeza baseada em tamanho não é ativada automaticamente.
AUTO
A limpeza baseada em tamanho é ativada automaticamente quando o tamanho no disco atinge 90% de max_storage_size_mb. Limpeza com base no tamanho remove as consultas menos dispendiosas e mais antigas primeiro. Ele para a aproximadamente 80% do max_storage_size_mb. Esse é o valor de configuração padrão.
SIZE_BASED_CLEANUP_MODE é do tipo nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }
Designa o modo de captura da consulta ativa no momento. Cada modo define políticas de captura de consulta específicas.
Observação
Cursores, consultas dentro de procedimentos armazenados e consultas compiladas nativamente são sempre capturados quando o modo de captura de consulta é definido como ALL, AUTO ou CUSTOM.
ALL
Captura todas as consultas.
AUTO
Captura as consultas relevantes baseadas na contagem de execução e no consumo de recursos. Esse é o valor de configuração padrão de Banco de Dados SQL do Azure.
Nenhuma
Pare de capturar novas consultas. O Repositório de Consultas continua coletando estatísticas de compilação e runtime para consultas que já foram capturadas. Use essa configuração com cuidado, pois você pode perder a captura de consultas importantes.
CUSTOM
Permite o controle sobre as opções de QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE é do tipo nvarchar.
max_plans_per_query
Define o número máximo de planos mantidos para cada consulta. MAX_PLANS_PER_QUERY é do tipo int. O valor padrão é 200.
WAIT_STATS_CAPTURE_MODE { ON | OFF }
Controla se as estatísticas de espera são capturadas por consulta.
ATIVADO
As informações de estatísticas de espera por consulta são capturadas. Esse valor é o valor de configuração padrão.
OFF
As informações de estatísticas de espera por consulta não são capturadas.
<query_capture_policy_option_list> :: =
Controla as opções da política de captura do Repositório de Consultas. Exceto para STALE_CAPTURE_POLICY_THRESHOLD, essas opções definem as condições OR que precisam ocorrer para que as consultas sejam capturadas no valor de Limite da Política de Captura Obsoleta definido.
STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }
Define o período de intervalo de avaliação para determinar se uma consulta deve ser capturada. O padrão é um dia e pode ser definido de uma hora a sete dias. number é do tipo int.
EXECUTION_COUNT = integer
Define o número de vezes que uma consulta é executada durante o período de avaliação. O padrão é 30, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ser executada, pelo menos, 30 vezes em um dia para ser persistente no Repositório de Consultas. EXECUTION_COUNT é do tipo int.
TOTAL_COMPILE_CPU_TIME_MS = integer
Define o tempo total decorrido da CPU de compilação usado por uma consulta durante o período de avaliação. O padrão é 1.000, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ter um total de, pelo menos, um segundo do tempo da CPU gasto durante a compilação da consulta em um dia para ser persistente no Repositório de Consultas. TOTAL_COMPILE_CPU_TIME_MS é do tipo int.
TOTAL_EXECUTION_CPU_TIME_MS = integer
Define o tempo total decorrido da CPU de execução usado por uma consulta durante o período de avaliação. O padrão é 100, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ter um total de, pelo menos, 100 ms do tempo da CPU gasto durante a execução em um dia para ser persistente no Repositório de Consultas. TOTAL_EXECUTION_CPU_TIME_MS é do tipo int.
<snapshot_option> ::=
Determina o nível de isolamento da transação.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
ATIVADO
Habilita a opção de Instantâneo no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usar Isolamento de Instantâneo. Quando essa opção está habilitada, as transações podem especificar o nível de isolamento da transação SNAPSHOT. Ao executar uma transação no nível de isolamento SNAPSHOT, todas as instruções consultam um instantâneo de dados, se houver um no início da instrução. Se uma transação que executa no nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definido como ON em todos os bancos de dados ou cada instrução na transação deverá usar dicas de bloqueio em qualquer referência em uma cláusula FROM para uma tabela em um banco de dados onde ALLOW_SNAPSHOT_ISOLATION seja OFF.
OFF
Desativa a opção de Instantâneo no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.
Ao definir ALLOW_SNAPSHOT_ISOLATION para um novo estado (de ON para OFF ou de OFF para ON), ALTER DATABASE não retorna o controle para o chamador até que todas as transações existentes no banco de dados sejam confirmadas. Se o banco de dados já estiver no estado especificado na instrução ALTER DATABASE, o controle será retornado ao chamador imediatamente. Se a instrução ALTER DATABASE não for retornada rapidamente, use sys.dm_tran_active_snapshot_database_transactions para determinar se há transações de longa duração. Se a instrução ALTER DATABASE for cancelada, o banco de dados permanecerá no estado que estava quando ALTER DATABASE foi iniciada. A exibição do catálogo sys.databases indica o estado de transações de isolamento de instantâneo no banco de dados. Se snapshot_isolation_state_desc = IN_TRANSITION_TO_ON
, a instrução ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF
pausa seis segundos e repete a operação.
Não será possível alterar o estado de ALLOW_SNAPSHOT_ISOLATION se o banco de dados for OFFLINE.
Se você definir ALLOW_SNAPSHOT_ISOLATION em um banco de dados READ_ONLY, a configuração será mantida se o banco de dados for definido posteriormente como READ_WRITE.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna snapshot_isolation_state
na exibição de catálogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
ATIVADO
Habilita a opção de Instantâneo de Leitura Confirmada no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usar Isolamento de Instantâneo. Quando essa opção está habilitada, as transações que especificam o nível de isolamento READ COMMITTED usam o controle de versão de linha, em vez de bloqueio. Todas as instruções consultam um instantâneo de dados, se houver um no início da instrução quando uma transação é executada no nível de isolamento READ COMMITTED.
OFF
Desabilita a opção de Instantâneo de Leitura Confirmada no nível do banco de dados. As transações que especificam o nível de isolamento READ COMMITTED usam bloqueio.
Para definir READ_COMMITTED_SNAPSHOT como ON ou OFF, não deve haver nenhuma conexão ativa com o banco de dados, exceto para a que está executando o comando ALTER DATABASE. Entretanto, o banco de dados não precisa estar no modo de usuário único. Não é possível alterar o estado dessa opção quando o banco de dados for OFFLINE.
Se você definir READ_COMMITTED_SNAPSHOT em um banco de dados READ_ONLY, a configuração será mantida quando o banco de dados for definido posteriormente como READ_WRITE.
READ_COMMITTED_SNAPSHOT não pode ser ativado para os bancos de dados do sistema master
, tempdb
ou msdb
. Se você alterar a configuração para model
, ela se tornará o padrão para qualquer novo banco de dados criado, exceto para tempdb
.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_read_committed_snapshot_on
na exibição de catálogo sys.databases.
Aviso
Quando uma tabela é criada com DURABILITY = SCHEMA_ONLY
e READ_COMMITTED_SNAPSHOT é posteriormente alterada usando ALTER DATABASE
, os dados na tabela são perdidos.
Dica
No Banco de Dados SQL do Azure, o comando ALTER DATABASE
para definir READ_COMMITTED_SNAPSHOT como ON ou OFF para um banco de dados precisa ser executado no banco de dados master
.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
ATIVADO
Quando o nível de isolamento da transação é definido com qualquer nível de isolamento inferior a SNAPSHOT, todas as operações Transact-SQL interpretadas em tabelas com otimização de memória são executadas no isolamento de SNAPSHOT. Exemplos de níveis de isolamento inferiores ao snapshot são READ COMMITTED ou READ UNCOMMITTED. Essas operações são executadas não importa se o nível de isolamento da transação é definido explicitamente no nível de sessão ou se a opção é usada implicitamente.
OFF
Não eleva o nível de isolamento da transação para operações interpretadas do Transact-SQL em tabelas com otimização de memória.
Não será possível alterar o estado de MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se o banco de dados for OFFLINE.
O valor padrão é OFF.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_memory_optimized_elevate_to_snapshot_on
na exibição de catálogo sys.databases.
<sql_option> ::=
Controla as opções de conformidade ANSI no nível de banco de dados.
ANSI_NULL_DEFAULT { ON | OFF }
Determina o valor padrão, NULL ou NOT NULL, de uma coluna ou um tipo CLR definido pelo usuário para o qual a nulidade não é definida explicitamente nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem regras de restrição, independentemente de essa configuração.
ATIVADO
O valor padrão é NULL.
OFF
O valor padrão é NOT NULL.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULL_DEFAULT. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_NULL_DEFAULT como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_NULL_DFLT_ON.
Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o banco de dados padrão para NULL.
Você pode determinar o status dessa opção examinando a coluna is_ansi_null_default_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiNullDefault
da função DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
ATIVADO
Todas as comparações com um valor nulo são avaliadas como UNKNOWN.
OFF
As comparações de valores não Unicode com um valor nulo são avaliadas como TRUE se ambos os valores forem NULL.
Importante
Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULLS. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_NULLS como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_NULLS.
Observação
SET ANSI_NULLS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção examinando a coluna is_ansi_nulls_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiNullsEnabled
da função DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
ATIVADO
As cadeias de caracteres são preenchidas com a mesma largura antes da conversão. Também são preenchidas com o mesmo comprimento antes de inserir para um tipo de dados varchar ou nvarchar.
OFF
Insere espaços em branco à direita em valores de caractere em colunas varchar ou nvarchar. Também deixa zeros à direita em valores binários inseridos nas colunas varbinary. Os valores não são preenchidos com o tamanho da coluna.
Quando OFF é especificado, essa configuração afeta apenas a definição de novas colunas.
Importante
Em uma versão futura do SQL Server, ANSI_PADDING sempre será ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. É recomendável sempre definir ANSI_PADDING como ON. ANSI_PADDING deve ser ON ao criar ou manipular índices em colunas computadas ou exibições indexadas.
Colunas char(n) e binary(n) que permitem valores nulos são preenchidas até o comprimento da coluna quando ANSI_PADDING está definido como ON. Espaços em branco e zeros à direita são cortados quando ANSI_PADDING está OFF. As colunas char(n) e binary(n) que não permitem valores nulos sempre são preenchidas até o tamanho da coluna.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_PADDING. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_PADDING como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_PADDING.
Você pode determinar o status dessa opção examinando a coluna is_ansi_padding_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiPaddingEnabled
da função DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
ATIVADO
Erros ou avisos são emitidos quando ocorrem condições como divisão por zero. Erros e avisos também são emitidos quando valores nulos aparecerem em funções de agregação.
OFF
Nenhum aviso é emitido e os valores nulos são retornados quando condições como “dividir por zero” ocorrem.
Observação
SET ANSI_WARNINGS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_WARNINGS. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_WARNINGS como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_PADDING.
Você pode determinar o status dessa opção examinando a coluna is_ansi_warnings_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiWarningsEnabled
da função DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
ATIVADO
Uma consulta é encerrada quando ocorre um estouro ou erro de divisão por zero durante a execução da consulta.
OFF
Uma mensagem de aviso é exibida quando um desses erros ocorre. A consulta, o lote ou a transação continuará sendo processado como se nenhum erro tivesse ocorrido, mesmo que um aviso seja exibido.
Observação
SET ARITHABORT também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção examinando a coluna is_arithabort_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsArithmeticAbortEnabled
da função DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Para obter mais informações, consulte nível de compatibilidade ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | OFF }
ATIVADO
O resultado de uma operação de concatenação será NULL quando qualquer operando for NULL. Por exemplo, concatenar a cadeia de caracteres "This is" e NULL gera o valor NULL, em vez do valor "This is".
OFF
O valor nulo é tratado como uma cadeia de caracteres vazia.
Observação
CONCAT_NULL_YIELDS_NULL deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Em uma versão futura do SQL Server, CONCAT_NULL_YIELDS_NULL sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para CONCAT_NULL_YIELDS_NULL. Por padrão, clientes ODBC e OLE DB emitem uma configuração CONCAT_NULL_YIELDS_NULL de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para saber mais, confira SET CONCAT_NULL_YIELDS_NULL.
Você pode determinar o status dessa opção examinando a coluna is_concat_null_yields_null_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsNullConcat
da função DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
ATIVADO
Um erro é gerado quando ocorre perda de precisão em uma expressão.
OFF
A perda de precisão não gera uma mensagem de erro e o resultado é arredondado para a precisão da coluna ou da variável que armazena o resultado.
Importante
NUMERIC_ROUNDABORT deve ser definido como OFF ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção na coluna is_numeric_roundabort_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsNumericRoundAbortEnabled
da função DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
ATIVADO
As aspas duplas podem ser utilizadas para conter identificadores delimitados.
Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores entre aspas não precisam seguir as regras Transact-SQL para identificadores. Eles podem ser palavras-chave e incluir caracteres não permitidos nos identificadores Transact-SQL. Se uma aspa dupla (
"
) fizer parte do identificador, ela poderá ser representada por duas aspas duplas (""
).OFF
Os identificadores não podem estar entre aspas e precisam seguir todas as regras do Transact-SQL para identificadores. Literais podem ser delimitados por aspas simples ou duplas.
O SQL Server também permite que os identificadores sejam delimitados por colchetes ([
e ]
). Identificadores entre colchetes sempre podem ser usados, seja qual for a configuração QUOTED_IDENTIFIER. Para obter mais informações, consulte identificadores de banco de dados.
Quando uma tabela é criada, a opção QUOTED IDENTIFIER sempre é armazenada como ON nos metadados da tabela. A opção é armazenada mesmo que seja definida como OFF quando a tabela é criada.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para QUOTED_IDENTIFIER. Clientes ODBC e OLE DB emitem uma instrução SET no nível de conexão configurando QUOTED_IDENTIFIER como ON por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET QUOTED_IDENTIFIER.
Você pode determinar o status dessa opção examinando a coluna is_quoted_identifier_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsQuotedIdentifiersEnabled
da função DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
ATIVADO
O disparo recursivo de gatilhos AFTER é permitido.
OFF
Você pode determinar o status dessa opção examinando a coluna
is_recursive_triggers_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedadeIsRecursiveTriggersEnabled
da função DATABASEPROPERTYEX.
Observação
Somente a recursão direta será evitada quando RECURSIVE_TRIGGERS estiver definido como OFF. Para desabilitar a recursão indireta, é necessário definir também a opção do servidor nested triggers como 0.
Você pode determinar o status dessa opção examinando a coluna is_recursive_triggers_on
na exibição de catálogo sys.databases ou a propriedade IsRecursiveTriggersEnabled
da função DATABASEPROPERTYEX.
<target_recovery_time_option> ::=
Especifica a frequência de pontos de verificação indiretos por banco de dados. A partir do SQL Server 2016 (13.x), o valor padrão para novos bancos de dados é de 1 minuto, o que indica que o banco de dados usa pontos de verificação indiretos. Para versões mais antigas, o padrão é 0, o que indica que o banco de dados usa pontos de verificação automáticos, cuja frequência depende da configuração do intervalo de recuperação da instância do servidor. Microsoft recomenda 1 minuto para a maioria dos sistemas.
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
target_recovery_time
Especifica o salto máximo no tempo para recuperar o banco de dados especificado no caso de uma falha. target_recovery_time é do tipo int.
SECONDS
Indica que target_recovery_time é expresso como o número de segundos.
MINUTES
Indica que target_recovery_time é expresso como o número de minutos.
Para obter mais informações sobre pontos de verificação indiretos, consulte pontos de verificação de banco de dados.
WITH <encerramento> ::=
Especifica quando reverter transações incompletas quando há transição do banco de dados de um estado para outro. Se a cláusula de término for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Somente uma cláusula de término pode ser especificada e ela sucede as cláusulas SET.
Observação
Nem todas as opções de banco de dados usam a cláusula de <encerramento> WITH. Para saber mais, confira a tabela em Opções de configuração na seção "Comentários" deste artigo.
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Especifica se a reversão deve ser feita após o número de segundos especificado ou imediatamente.
NO_WAIT
Especifica que a solicitação falhará se o estado do banco de dados solicitado ou a alteração de opção não puder ser concluída imediatamente. Concluir imediatamente significa não esperar a confirmação ou a reversão das transações por conta própria.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
LIGADO por padrão, mas também definido automaticamente como DESLIGADO após a operação de restauração pontual. Para saber mais, incluindo como habilitar essa configuração, confira Como configurar a política de retenção.
ATIVADO
Padrão. Habilita a política de retenção de tabela temporária. Para obter mais informações, confira Gerenciar a retenção de dados históricos em tabelas temporárias com versão do sistema.
OFF
Não execute a política de retenção de histórico temporal.
Opções Set
Para recuperar as configurações atuais das opções de banco de dados, use a exibição do catálogo sys.databases ou DATABASEPROPERTYEX
Depois de definir uma opção de banco de dados, a nova configuração entra em vigor imediatamente.
Você pode alterar os valores padrão para qualquer uma das opções de banco de dados para todos os bancos de dados recém-criados. Para fazer isso, altere a opção de banco de dados apropriada no banco de dados model
.
Nem todas as opções de banco de dados usam a cláusula de <encerramento> WITH ou podem ser especificadas em combinação com outras opções. A tabela a seguir lista essas opções e seu status de opção e término.
Categoria de opções | Pode ser especificado com outras opções | Pode usar a cláusula de <encerramento> WITH |
---|---|---|
<auto_option> | Sim | Não |
<change_tracking_option> | Sim | Sim |
<cursor_option> | Sim | Não |
<db_encryption_option> | Sim | Não |
<db_update_option> | Sim | Sim |
<db_user_access_option> | Sim | Sim |
<delayed_durability_option> | Sim | Sim |
<parameterization_option> | Sim | Sim |
ALLOW_SNAPSHOT_ISOLATION | Não | Não |
READ_COMMITTED_SNAPSHOT | Não | Sim |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Sim | Sim |
DATE_CORRELATION_OPTIMIZATION | Sim | Sim |
<sql_option> | Sim | Não |
<target_recovery_time_option> | Não | Sim |
Exemplos
a. Definir o banco de dados como READ_ONLY
Alterar o estado de um banco de dados ou grupo de arquivos para READ_ONLY ou READ_WRITE requer acesso exclusivo ao banco de dados e pode levar alguns segundos para ser concluído. O exemplo a seguir define o banco de dados como o modo RESTRICTED_USER
para limitar o acesso. Em seguida, o exemplo define o estado do banco de dados AdventureWorks2022
como READ_ONLY
e retorna o acesso ao banco de dados para todos os usuários.
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command might take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
Para definir o banco de dados de volta para o modo de leitura/gravação:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
Para verificar:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Habilitar o isolamento de instantâneo em um banco de dados
O exemplo a seguir habilita a opção de estrutura de isolamento de instantâneo para o banco de dados AdventureWorks2022
.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Verifique o estado de snapshot_isolation_framework
no banco de dados.
--Connect to [database_name]
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO
O conjunto de resultados mostra que a estrutura de isolamento de instantâneo está habilitada.
name | snapshot_isolation_state | descrição |
---|---|---|
[nome_do_banco_de_dados] | 1 | ATIVADO |
C. Habilitar, modificar ou desabilitar o controle de alterações
O exemplo a seguir habilita o controle de alterações no banco de dados AdventureWorks2022
e define o período de retenção para 2
dias.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
O exemplo a seguir mostra como alterar o período de retenção para 3 dias.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
O exemplo a seguir mostra como desabilitar o controle de alterações no banco de dados AdventureWorks2022
.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D. Habilitar o Repositório de Consultas
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
E. Habilitar o Repositório de Consultas com estatísticas de espera
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
F. Habilitar o Repositório de Consultas com opções personalizadas da política de captura
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Conteúdo relacionado
- Estatísticas
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- nível de compatibilidade ALTER DATABASE
- Espelhamento de banco de dados de ALTER DATABASE
- CREATE DATABASE
- habilitar e desabilitar o controle de alterações (SQL Server)
- drop database (Transact-SQL)
- DEFINIR O NÍVEL DE ISOLAMENTO DA TRANSAÇÃO (Transact-SQL)
- sp_configure
- práticas recomendadas para monitorar cargas de trabalho com o Repositório de Consultas
- Dicas do Repositório de Consultas
* Instância Gerenciada de SQL *
Instância Gerenciada do Azure SQL
Os níveis de compatibilidade são SET
opções, mas são descritos no nível de compatibilidade ALTER DATABASE .
Observação
Muitas opções de definição de banco de dados podem ser configuradas para a sessão atual usando Instruções SET e são configuradas com frequência por aplicativos quando eles são conectados. As opções definidas no nível de sessão substituem os valores de ALTER DATABASE SET
. As opções de banco de dados descritas nas seções a seguir são valores que podem ser definidos para sessões que não fornecem explicitamente outros valores de opções de definição.
Sintaxe
ALTER DATABASE { database_name | Current }
SET
{
<optionspec> [ ,...n ]
}
;
<optionspec> ::=
{
<auto_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<delayed_durability_option> ::=DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<temporal_history_retention>::= TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argumentos
database_name
O nome do banco de dados a ser modificado.
CURRENT
CURRENT
executa a ação no banco de dados atual.
CURRENT
não é compatível com todas as opções em todos os contextos. Se CURRENT
falhar, forneça o nome do banco de dados.
<auto_option> ::=
Controla opções automáticas.
AUTO_CREATE_STATISTICS { ON | OFF }
ATIVADO
O otimizador de consulta cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar planos e desempenho de consulta. Estas estatísticas de coluna única são criadas quando o otimizador de consulta compila consultas. As estatísticas de coluna única só são criadas em colunas que ainda não são a primeira de um objeto de estatísticas existente.
O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
OFF
O otimizador de consulta não cria estatísticas em colunas únicas em predicados de consulta quando estiver compilando consultas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Você pode determinar o status dessa opção examinando a coluna
is_auto_create_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedadeIsAutoCreateStatistics
da função DATABASEPROPERTYEX.Para obter mais informações, confira a seção "Opções de estatísticas" em Estatísticas.
INCREMENTAL = ON | OFF
Defina AUTO_CREATE_STATISTICS como ON e INCREMENTAL como ON. Essa configuração cria estatísticas criadas automaticamente como incrementais sempre que há suporte para estatísticas incrementais. O valor padrão é OFF. Para saber mais, veja CREATE STATISTICS.
AUTO_SHRINK {ON | OFF}
ATIVADO
Os arquivos de banco de dados são candidatos à redução periódica. A menos que você tenha um requisito específico, não defina a opção AUTO_SHRINK banco de dados como ON. Para saber mais, confira Reduzir um banco de dados.
Arquivos de dados e arquivos de log podem ser reduzidos automaticamente. AUTO_SHRINK reduzirá o tamanho do log de transações somente se o banco de dados estiver definido como modelo de recuperação SIMPLE ou se o log tiver sido submetido a backup. Quando definido como OFF, os arquivos de banco de dados não são reduzidos automaticamente durante as verificações periódicas de espaço não utilizado.
A opção AUTO_SHRINK faz com que os arquivos sejam reduzidos quando mais que 25% do arquivo contém espaço não utilizado. A opção faz com que o arquivo diminua em um dos dois tamanhos. Ele reduz o que for maior:
- o tamanho em que 25% do arquivo é o espaço não utilizado
- o tamanho do arquivo quando ele foi criado
Não é possível reduzir um banco de dados somente leitura.
OFF
Os arquivos de banco de dados não são reduzidos automaticamente durante verificações periódicas de espaço não utilizado.
Você pode determinar o status dessa opção examinando a coluna is_auto_shrink_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoShrink
da função DATABASEPROPERTYEX.
Observação
A opção AUTO_SHRINK não está disponível em um banco de dados independente.
AUTO_UPDATE_STATISTICS { ON | OFF }
ATIVADO
Especifica que o otimizador de consulta atualiza as estatísticas quando elas são usadas por uma consulta e quando podem estar desatualizadas. As estatísticas ficam desatualizadas depois que operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou na exibição indexada. O otimizador de consulta determina quando estatísticas podem estar desatualizadas contando o número de modificações de dados desde a última atualização das estatísticas e comparando o número de modificações a um limite. O limite se baseia no número de linhas na tabela ou na exibição indexada.
O otimizador de consulta verifica se há estatísticas desatualizadas antes de compilar uma consulta e executa um plano de consulta armazenado em cache. O otimizador de consulta usa as colunas, as tabelas e as exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. O otimizador de consulta determina essas informações antes de compilar uma consulta. Antes de executar um plano de consulta em cache, o Mecanismo de Banco de Dados verifica se o plano de consulta faz referência a estatísticas atualizadas.
A opção AUTO_UPDATE_STATISTICS se aplica a estatísticas criadas para índices, colunas únicas em predicados de consulta, além de estatísticas criadas por meio da instrução CREATE STATISTICS. Essa opção também se aplica a estatísticas filtradas.
O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
Use a opção AUTO_UPDATE_STATISTICS_ASYNC para especificar se as estatísticas são atualizadas de forma síncrona ou assíncrona.
OFF
Especifica que o otimizador de consulta não atualiza as estatísticas quando elas são usadas por uma consulta. O otimizador de consulta também não atualiza estatísticas quando elas podem estar desatualizadas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoUpdateStatistics
da função DATABASEPROPERTYEX.
Para obter mais informações, confira a seção "Usar as opções de estatísticas em todo o banco de dados" em Estatísticas.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
ATIVADO
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O otimizador de consulta não aguarda a conclusão das atualizações de estatísticas para compilar consultas.
Definir essa opção como ON não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é definida como OFF e o otimizador de consulta atualiza estatísticas de forma síncrona.
OFF
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O otimizador de consulta aguarda a conclusão das atualizações de estatísticas para compilar consultas.
Definir essa opção como OFF não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_async_on
na exibição de catálogo sys.databases.
Para obter mais informações que descrevem quando usar atualizações de estatísticas síncronas ou assíncronas, veja a seção que "Usar as opções de estatísticas em todo o banco de dados" em Estatísticas.
<automatic_tuning_option> ::=
Controla as opções automáticas para o Ajuste automático.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }
Habilita ou desabilita a opção de FORCE_LAST_GOOD_PLAN
de.
DEFAULT
O valor padrão da Instância Gerenciada de SQL do Azure é ON.
ATIVADO
O Mecanismo de Banco de Dados força automaticamente o último plano válido conhecido nas consultas Transact-SQL, em que o novo plano de consulta causa regressões de desempenho. O Mecanismo de Banco de Dados monitora continuamente o desempenho de consultas da consulta Transact-SQL com o plano forçado. Se houver ganhos de desempenho, o Mecanismo de Banco de Dados continua usando o último plano válido conhecido. Se os ganhos de desempenho não forem detectados, o Mecanismo de Banco de Dados produzirá um novo plano de consulta. A instrução falhará se o Repositório de Consultas não estiver habilitado ou não estiver no modo leitura/gravação. Esse é o valor padrão.
OFF
O Mecanismo de Banco de Dados relata possíveis regressões de desempenho de consulta causadas por alterações do plano de consulta na exibição sys.dm_db_tuning_recommendations. No entanto, essas recomendações não são aplicadas automaticamente. Os usuários podem monitorar recomendações ativas e corrigir problemas identificados aplicando scripts Transact-SQL mostrados na exibição.
<change_tracking_option> ::=
Controla as opções de controle de alterações. É possível habilitar o controle de alterações, definir opções, alterar opções e desabilitar o controle de alterações. Para obter exemplos, confira a seção Exemplos mais adiante neste artigo.
ATIVADO
Habilita o controle de alterações no banco de dados. Quando você habilita o controle de alterações, também pode definir as opções AUTO CLEANUP e CHANGE RETENTION.
AUTO_CLEANUP = { ON | OFF }
ATIVADO
As informações de controle de alterações são removidas automaticamente depois do período de retenção especificado.
OFF
Os dados de controle de alterações não são removidos do banco de dados.
CHANGE_RETENTION = período_de_retenção { DAYS | HOURS | MINUTES }
Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados serão removidos somente quando o valor AUTO_CLEANUP for ON.
retention_period é um inteiro que especifica o componente numérico do período de retenção.
O período de retenção padrão é de 2 dias. O período de retenção mínimo é de 1 minuto. O tipo de retenção padrão é DAYS.
OFF
Desabilita o controle de alterações no banco de dados. Desabilite o controle de alterações em todas as tabelas antes de desabilitá-lo no banco de dados.
<cursor_option> ::=
Controla opções de cursor.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
ATIVADO
Todos os cursores abertos quando você confirma ou reverte uma transação são fechados.
OFF
Os cursores permanecem abertos quando uma transação é confirmada; uma transação revertida fechará todos os cursores, exceto aqueles definidos como INSENSITIVE ou STATIC.
As configurações no nível de conexão que são definidas com o uso da instrução SET substituem a configuração de banco de dados padrão por CURSOR_CLOSE_ON_COMMIT. Clientes ODBC e OLE DB emitem uma configuração CURSOR_CLOSE_ON_COMMIT de instrução SET no nível de conexão como desativada para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET CURSOR_CLOSE_ON_COMMIT.
É possível determinar o status dessa opção examinando a coluna is_cursor_close_on_commit_on
na exibição de catálogo sys.databases ou a propriedade IsCloseCursorsOnCommitEnabled da função DATABASEPROPERTYEX. O cursor é implicitamente desalocado somente na desconexão. Para saber mais, confira DECLARE CURSOR.
<db_encryption_option> ::=
Controla o estado de criptografia do banco de dados.
ENCRYPTION { ON | OFF }
Define o banco de dados a ser criptografado (ON) ou não criptografado (OFF). Para obter mais informações sobre criptografia de banco de dados, consulte TDE (Transparent Data Encryption)e Transparent Data Encryption para o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Azure Synapse Analytics.
Quando a criptografia é habilitada no nível do banco de dados, todos os grupos de arquivos são criptografados. Todos os novos grupos de arquivos herdam a propriedade criptografada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia de banco de dados falhará.
É possível ver o estado da criptografia do banco de dados usando a exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.
<delayed_durability_option> ::=
Controla se as transações são confirmadas completamente duráveis ou duráveis atrasadas.
DISABLED
Todas as transações após
SET DISABLED
são completamente duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou instrução de confirmação são ignoradas.ALLOWED
Todas as transações após
SET ALLOWED
são completamente duráveis ou duráveis atrasadas, dependendo da opção de durabilidade definida no bloco atômico ou na instrução de confirmação.FORCED
Todas as transações após
SET FORCED
são duráveis atrasadas. Todas as opções de durabilidade definidas em um bloco atômico ou instrução de confirmação são ignoradas.
<PARAMETERIZATION_option> ::=
Controla a opção de parametrização.
PARAMETERIZATION { SIMPLE | FORCED }
SIMPLES
As consultas são parametrizadas com base no comportamento padrão do banco de dados.
FORCED
O SQL Server parametriza todas as consultas feitas no banco de dados.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_parameterization_forced
na exibição de catálogo sys.databases.
<query_store_options> ::=
ON | OFF | CLEAR [ ALL ]
Controla se o Repositório de Consultas está habilitado neste banco de dados, além de controlar a remoção do conteúdo do Repositório de Consultas.
ATIVADO
Habilita o Repositório de Consultas.
OFF
Desabilita o Repositório de Consultas. Esse é o valor padrão.
CLEAR
Remove o conteúdo do Repositório de Consultas.
OPERATION_MODE
Descreve o modo de operação do Repositório de Consultas. Os valores válidos são READ_ONLY e READ_WRITE. No modo READ_WRITE, o Repositório de Consultas coleta e persiste as informações de estatísticas de execução do runtime e do plano de consulta. No modo READ_ONLY, as informações podem ser lidas do repositório de consultas, mas novas informações não são adicionadas. Se o espaço alocado máximo do Repositório de Consultas tiver sido esgotado, o Repositório de Consultas alterará seu modo de operação para READ_ONLY.
CLEANUP_POLICY
Descreve a política de retenção de dados do Repositório de Consultas. STALE_QUERY_THRESHOLD_DAYS determina o número de dias durante os quais as informações de uma consulta são mantidas no Repositório de Consultas. STALE_QUERY_THRESHOLD_DAYS é do tipo bigint. O valor padrão é 30. Para o Banco de Dados SQL Basic Edition, o padrão é 7 dias.
DATA_FLUSH_INTERVAL_SECONDS
Determina a frequência na qual os dados gravados no Repositório de Consultas é persistida em disco. Para otimizar o desempenho, os dados coletados pelo Repositório de Consultas são gravados de maneira assíncrona no disco. A frequência em que essa transferência assíncrona ocorre é configurada usando o argumento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS é do tipo bigint. O valor padrão é 900 (15 min).
MAX_STORAGE_SIZE_MB
Determina o espaço alocado para o Repositório de Consultas. MAX_STORAGE_SIZE_MB é do tipo bigint. O valor padrão é 100 MB.
O limite MAX_STORAGE_SIZE_MB
não é imposto estritamente. O tamanho do armazenamento é verificado somente quando o Repositório de Consultas grava dados no disco. Esse intervalo é definido pela opção DATA_FLUSH_INTERVAL_SECONDS
ou pela opção da caixa de diálogo do Repositório de Consultas Management Studio, Intervalo de Liberação de Dados. O valor padrão do intervalo é de 900 segundos (ou 15 minutos).
Se o Repositório de Consultas tiver violado o limite de MAX_STORAGE_SIZE_MB
entre verificações de tamanho de armazenamento, ele fará a transição para o modo somente leitura. Se o SIZE_BASED_CLEANUP_MODE
estiver habilitado, o mecanismo de limpeza que impõe o limite MAX_STORAGE_SIZE_MB
também será disparado.
Depois que espaço suficiente tiver sido limpo, o modo repositório de consultas alterna automaticamente para leitura-gravação.
Importante
- Se você acha que sua captura de carga de trabalho precisa de mais de 10 GB de espaço em disco, você provavelmente deve repensar e otimizar sua carga de trabalho para reutilizar planos de consulta (por exemplo, usando de parametrização forçada ou ajustar as configurações do Repositório de Consultas.
- Começando com SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, você poderá definir
QUERY_CAPTURE_MODE
como CUSTOM para controle adicional sobre a política de captura de consulta. - O limite de configuração
MAX_STORAGE_SIZE_MB
é de 10.240 MB na Instância Gerenciada de SQL do Azure.
INTERVAL_LENGTH_MINUTES
Determina o intervalo de tempo em que os dados de estatísticas de execução do runtime são agregados no Repositório de Consultas. Para otimizar o uso de espaço, as estatísticas de execução de runtime no repositório de estatísticas de runtime são agregadas em uma janela de tempo fixo. Essa janela de tempo fixo é configurada usando o argumento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES é do tipo bigint. O valor padrão é 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
Controla se a limpeza é ativada automaticamente quando a quantidade total de dados fica próxima do tamanho máximo.
OFF
A limpeza baseada em tamanho não é ativada automaticamente.
AUTO
A limpeza baseada em tamanho é ativada automaticamente quando o tamanho no disco atinge 90% de max_storage_size_mb. Limpeza com base no tamanho remove as consultas menos dispendiosas e mais antigas primeiro. Ele para a aproximadamente 80% do max_storage_size_mb. Esse é o valor de configuração padrão.
SIZE_BASED_CLEANUP_MODE é do tipo nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }
Designa o modo de captura da consulta ativa no momento.
ALL
Todas as consultas são capturadas.
AUTO
Captura as consultas relevantes baseadas na contagem de execução e no consumo de recursos. Esse é o valor de configuração padrão de Banco de Dados SQL do Azure.
Nenhuma
Pare de capturar novas consultas. O Repositório de Consultas continua coletando estatísticas de compilação e runtime para consultas que já foram capturadas. Use essa configuração com cuidado, pois você pode perder a captura de consultas importantes.
QUERY_CAPTURE_MODE é do tipo nvarchar.
max_plans_per_query
Um número inteiro que representa a quantidade máxima de planos de manutenção para cada consulta. MAX_PLANS_PER_QUERY é do tipo int. O valor padrão é 200.
WAIT_STATS_CAPTURE_MODE { ON | OFF }
Controla se as estatísticas de espera são capturadas por consulta.
ATIVADO
As informações de estatísticas de espera por consulta são capturadas. Esse valor é o valor de configuração padrão.
OFF
As informações de estatísticas de espera por consulta não são capturadas.
<query_capture_policy_option_list> :: =
Controla as opções da política de captura do Repositório de Consultas. Exceto para STALE_CAPTURE_POLICY_THRESHOLD, essas opções definem as condições OR que precisam ocorrer para que as consultas sejam capturadas no valor de Limite da Política de Captura Obsoleta definido.
STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }
Define o período de intervalo de avaliação para determinar se uma consulta deve ser capturada. O padrão é um dia e pode ser definido de uma hora a sete dias.
EXECUTION_COUNT = integer
Define o número de vezes que uma consulta é executada durante o período de avaliação. O padrão é 30, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ser executada, pelo menos, 30 vezes em um dia para ser persistente no Repositório de Consultas. EXECUTION_COUNT é do tipo int.
TOTAL_COMPILE_CPU_TIME_MS = integer
Define o tempo total decorrido da CPU de compilação usado por uma consulta durante o período de avaliação. O padrão é 1.000, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ter um total de, pelo menos, um segundo do tempo da CPU gasto durante a compilação da consulta em um dia para ser persistente no Repositório de Consultas. TOTAL_COMPILE_CPU_TIME_MS é do tipo int.
TOTAL_EXECUTION_CPU_TIME_MS = integer
Define o tempo total decorrido da CPU de execução usado por uma consulta durante o período de avaliação. O padrão é 100, o que significa que, para o Limite da Política de Captura Obsoleta padrão, uma consulta precisa ter um total de, pelo menos, 100 ms do tempo da CPU gasto durante a execução em um dia para ser persistente no Repositório de Consultas. TOTAL_EXECUTION_CPU_TIME_MS é do tipo int.
<snapshot_option> ::=
Determina o nível de isolamento da transação.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
ATIVADO
Habilita a opção de Instantâneo no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usar Isolamento de Instantâneo. Após essa opção ser habilitada, as transações poderão especificar o nível de isolamento da transação SNAPSHOT. Ao executar uma transação no nível de isolamento SNAPSHOT, todas as instruções consultam um instantâneo de dados, se houver um no início da instrução. Se uma transação que executa no nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definido como ON em todos os bancos de dados ou cada instrução na transação deverá usar dicas de bloqueio em qualquer referência em uma cláusula FROM para uma tabela em um banco de dados onde ALLOW_SNAPSHOT_ISOLATION seja OFF.
OFF
Desativa a opção de Instantâneo no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.
Ao definir ALLOW_SNAPSHOT_ISOLATION para um novo estado (de ON para OFF ou de OFF para ON), ALTER DATABASE não retorna o controle para o chamador até que todas as transações existentes no banco de dados sejam confirmadas. Se o banco de dados já estiver no estado especificado na instrução ALTER DATABASE, o controle será retornado ao chamador imediatamente. Se a instrução ALTER DATABASE não for retornada rapidamente, use sys.dm_tran_active_snapshot_database_transactions para determinar se há transações de longa duração. Se a instrução ALTER DATABASE for cancelada, o banco de dados permanecerá no estado que estava quando ALTER DATABASE foi iniciada. A exibição do catálogo sys.databases indica o estado de transações de isolamento de instantâneo no banco de dados. Se snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, a instrução ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
pausa seis segundos e tenta novamente a operação.
Não será possível alterar o estado de ALLOW_SNAPSHOT_ISOLATION se o banco de dados for OFFLINE.
É possível alterar as configurações ALLOW_SNAPSHOT_ISOLATION para os bancos de dados master
, model
, msdb
e tempdb
. A configuração é mantida sempre que a instância do Mecanismo de Banco de Dados é interrompida e reiniciada se você altera a configuração para tempdb
. Se você alterar a configuração do banco de dados do sistema model
, essa configuração se tornará o padrão para quaisquer novos bancos de dados criados, exceto para tempdb
.
Por padrão, a opção é ON para os bancos de dados master
e msdb
.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna snapshot_isolation_state
na exibição de catálogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
ATIVADO
Habilita a opção READ_COMMITTED_SNAPSHOT no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usar Isolamento de Instantâneo. Quando essa opção está habilitada, as transações que especificam o nível de isolamento READ COMMITTED usam o controle de versão de linha, em vez de bloqueio. Todas as instruções consultam um instantâneo de dados, se houver um no início da instrução quando uma transação é executada no nível de isolamento READ COMMITTED.
OFF
Desativa a opção Read-Committed Snapshot no nível do banco de dados. As transações que especificam o nível de isolamento READ COMMITTED usam bloqueio.
Para definir READ_COMMITTED_SNAPSHOT como ON ou OFF, não deve haver nenhuma conexão ativa com o banco de dados, exceto para a que está executando o comando ALTER DATABASE. Entretanto, o banco de dados não precisa estar no modo de usuário único. Não é possível alterar o estado dessa opção quando o banco de dados for OFFLINE.
READ_COMMITTED_SNAPSHOT não pode ser ativado para os bancos de dados do sistema master
, tempdb
ou msdb
. Se você alterar a configuração do banco de dados do sistema model
, essa configuração se tornará o padrão para quaisquer novos bancos de dados criados, exceto para tempdb
.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_read_committed_snapshot_on
na exibição de catálogo sys.databases.
Aviso
Quando uma tabela é criada com DURABILITY = SCHEMA_ONLYe READ_COMMITTED_SNAPSHOT é posteriormente alterada usando ALTER DATABASE, os dados na tabela são perdidos.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
ATIVADO
Quando o nível de isolamento da transação é definido com qualquer nível de isolamento inferior a SNAPSHOT, todas as operações Transact-SQL interpretadas em tabelas com otimização de memória são executadas no isolamento de SNAPSHOT. Exemplos de níveis de isolamento inferiores ao snapshot são READ COMMITTED ou READ UNCOMMITTED. Essas operações são executadas não importa se o nível de isolamento da transação é definido explicitamente no nível de sessão ou se a opção é usada implicitamente.
OFF
Não eleva o nível de isolamento da transação para operações interpretadas do Transact-SQL em tabelas com otimização de memória.
Não será possível alterar o estado de MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se o banco de dados for OFFLINE.
O valor padrão é OFF.
A configuração atual dessa opção pode ser determinada por meio do exame da coluna is_memory_optimized_elevate_to_snapshot_on
na exibição de catálogo sys.databases.
<sql_option> ::=
Controla as opções de conformidade ANSI no nível de banco de dados.
ANSI_NULL_DEFAULT { ON | OFF }
Determina o valor padrão, NULL ou NOT NULL, de uma coluna ou um tipo CLR definido pelo usuário para o qual a nulidade não é definida explicitamente nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem regras de restrição, independentemente de essa configuração.
ATIVADO
O valor padrão é NULL.
OFF
O valor padrão é NOT NULL.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULL_DEFAULT. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_NULL_DEFAULT como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_NULL_DFLT_ON.
Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o banco de dados padrão para NULL.
Você pode determinar o status dessa opção examinando a coluna is_ansi_null_default_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiNullDefault
da função DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
ATIVADO
Todas as comparações com um valor nulo são avaliadas como UNKNOWN.
OFF
As comparações de valores não Unicode com um valor nulo são avaliadas como TRUE se ambos os valores forem NULL.
Importante
Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULLS. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_NULLS como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_NULLS.
Importante
SET ANSI_NULLS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção examinando a coluna is_ansi_nulls_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiNullsEnabled
da função DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
ATIVADO
As cadeias de caracteres são preenchidas com a mesma largura antes da conversão. Também são preenchidas com o mesmo comprimento antes de inserir para um tipo de dados varchar ou nvarchar.
OFF
Insere espaços em branco à direita em valores de caractere em colunas varchar ou nvarchar. Também deixa zeros à direita em valores binários inseridos nas colunas varbinary. Os valores não são preenchidos com o tamanho da coluna.
Quando OFF é especificado, essa configuração afeta apenas a definição de novas colunas.
Importante
Em uma versão futura do SQL Server, ANSI_PADDING sempre será ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. É recomendável sempre definir ANSI_PADDING como ON. ANSI_PADDING deve ser ON ao criar ou manipular índices em colunas computadas ou exibições indexadas.
Colunas char(n) e binary(n) que permitem valores nulos são preenchidas até o comprimento da coluna quando ANSI_PADDING está definido como ON. Espaços em branco e zeros à direita são cortados quando ANSI_PADDING está OFF. As colunas char(n) e binary(n) que não permitem valores nulos sempre são preenchidas até o tamanho da coluna.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_PADDING. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_PADDING como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_PADDING.
Você pode determinar o status dessa opção examinando a coluna is_ansi_padding_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiPaddingEnabled
da função DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
ATIVADO
Erros ou avisos são emitidos quando ocorrem condições como divisão por zero. Erros e avisos também são emitidos quando valores nulos aparecerem em funções de agregação.
OFF
Nenhum aviso é emitido e os valores nulos são retornados quando condições como “dividir por zero” ocorrem.
Importante
SET ANSI_WARNINGS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_WARNINGS. Clientes ODBC e OLE DB emitem uma instrução SET no nível da configuração de conexão ANSI_WARNINGS como ON para a sessão por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET ANSI_PADDING.
Você pode determinar o status dessa opção examinando a coluna is_ansi_warnings_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAnsiWarningsEnabled
da função DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
ATIVADO
Uma consulta é encerrada quando ocorre um estouro ou erro de divisão por zero durante a execução da consulta.
OFF
Uma mensagem de aviso é exibida quando um desses erros ocorre. A consulta, o lote ou a transação continuará sendo processado como se nenhum erro tivesse ocorrido, mesmo que um aviso seja exibido.
Importante
SET ARITHABORT também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção examinando a coluna is_arithabort_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsArithmeticAbortEnabled
da função DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Para obter mais informações, consulte nível de compatibilidade ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | OFF }
ATIVADO
O resultado de uma operação de concatenação será NULL quando qualquer operando for NULL. Por exemplo, concatenar a cadeia de caracteres "This is" e NULL gera o valor NULL, em vez do valor "This is".
OFF
O valor nulo é tratado como uma cadeia de caracteres vazia.
Importante
CONCAT_NULL_YIELDS_NULL deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Em uma versão futura do SQL Server, CONCAT_NULL_YIELDS_NULL sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para CONCAT_NULL_YIELDS_NULL. Por padrão, clientes ODBC e OLE DB emitem uma configuração CONCAT_NULL_YIELDS_NULL de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para saber mais, confira SET CONCAT_NULL_YIELDS_NULL.
Você pode determinar o status dessa opção examinando a coluna is_concat_null_yields_null_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsNullConcat
da função DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
ATIVADO
Um erro é gerado quando ocorre perda de precisão em uma expressão.
OFF
A perda de precisão não gera uma mensagem de erro e o resultado é arredondado para a precisão da coluna ou da variável que armazena o resultado.
Importante
NUMERIC_ROUNDABORT deve ser definido como OFF ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Você pode determinar o status dessa opção na coluna is_numeric_roundabort_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsNumericRoundAbortEnabled
da função DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
ATIVADO
As aspas duplas podem ser utilizadas para conter identificadores delimitados.
Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores entre aspas não precisam seguir as regras Transact-SQL para identificadores. Eles podem ser palavras-chave e incluir caracteres não permitidos nos identificadores Transact-SQL. Se uma aspa dupla (
"
) fizer parte do identificador, ela poderá ser representada por duas aspas duplas (""
).OFF
Os identificadores não podem estar entre aspas e precisam seguir todas as regras do Transact-SQL para identificadores. Literais podem ser delimitados por aspas simples ou duplas.
O SQL Server também permite que os identificadores sejam delimitados por colchetes ([
e ]
). Identificadores entre colchetes sempre podem ser usados, seja qual for a configuração QUOTED_IDENTIFIER. Para obter mais informações, consulte identificadores de banco de dados.
Quando uma tabela é criada, a opção QUOTED IDENTIFIER sempre é armazenada como ON nos metadados da tabela. A opção é armazenada mesmo que seja definida como OFF quando a tabela é criada.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para QUOTED_IDENTIFIER. Clientes ODBC e OLE DB emitem uma instrução SET no nível de conexão configurando QUOTED_IDENTIFIER como ON por padrão. Os clientes executam a instrução, quando você se conecta a uma instância do SQL Server. Para saber mais, confira SET QUOTED_IDENTIFIER.
Você pode determinar o status dessa opção examinando a coluna is_quoted_identifier_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsQuotedIdentifiersEnabled
da função DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
ATIVADO
O disparo recursivo de gatilhos AFTER é permitido.
OFF
Você pode determinar o status dessa opção examinando a coluna
is_recursive_triggers_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedadeIsRecursiveTriggersEnabled
da função DATABASEPROPERTYEX.Observação
Somente a recursão direta será evitada quando RECURSIVE_TRIGGERS estiver definido como OFF. Para desabilitar a recursão indireta, é necessário definir também a opção do servidor nested triggers como 0.
Você pode determinar o status dessa opção examinando a coluna is_recursive_triggers_on
na exibição de catálogo sys.databases ou a propriedade IsRecursiveTriggersEnabled
da função DATABASEPROPERTYEX.
<target_recovery_time_option> ::=
Não há suporte para target_recovery_time_option na Instância Gerenciada de SQL do Azure.
Especifica a frequência de pontos de verificação indiretos por banco de dados. A partir do SQL Server 2016 (13.x), o valor padrão para novos bancos de dados é de 1 minuto, o que indica que o banco de dados usa pontos de verificação indiretos. Para versões mais antigas, o padrão é 0, o que indica que o banco de dados usa pontos de verificação automáticos, cuja frequência depende da configuração do intervalo de recuperação da instância do servidor. Microsoft recomenda 1 minuto para a maioria dos sistemas.
WITH <encerramento> ::=
Especifica quando reverter transações incompletas quando há transição do banco de dados de um estado para outro. Se a cláusula de término for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Somente uma cláusula de término pode ser especificada e ela sucede as cláusulas SET.
Observação
Nem todas as opções de banco de dados usam a cláusula de <encerramento> WITH. Para saber mais, confira a tabela em Opções de configuração na seção "Comentários" deste artigo.
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Especifica se a reversão deve ser feita após o número de segundos especificado ou imediatamente.
NO_WAIT
Especifica que a solicitação falhará se o estado do banco de dados solicitado ou a alteração de opção não puder ser concluída imediatamente. Concluir imediatamente significa não esperar a confirmação ou a reversão das transações por conta própria.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
LIGADO por padrão, mas também definido automaticamente como DESLIGADO após a operação de restauração pontual. Para saber mais, incluindo como habilitar essa configuração, confira Como configurar a política de retenção.
ATIVADO
Padrão. Habilita a política de retenção de tabela temporária. Para obter mais informações, confira Gerenciar a retenção de dados históricos em tabelas temporárias com versão do sistema.
OFF
Não execute a política de retenção de histórico temporal.
Opções Set
Para recuperar as configurações atuais das opções de banco de dados, use a exibição do catálogo sys.databases ou DATABASEPROPERTYEX
Depois de definir uma opção de banco de dados, a nova configuração entra em vigor imediatamente.
Você pode alterar os valores padrão para qualquer uma das opções de banco de dados para todos os bancos de dados recém-criados. Para fazer isso, altere a opção de banco de dados apropriada no banco de dados do sistema model
.
Exemplos
a. Habilitar o isolamento de instantâneo em um banco de dados
O exemplo a seguir habilita a opção de estrutura de isolamento de instantâneo para o banco de dados AdventureWorks2022
.
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
O conjunto de resultados mostra que a estrutura de isolamento de instantâneo está habilitada.
name | snapshot_isolation_state | descrição |
---|---|---|
[nome_do_banco_de_dados] | 1 | ATIVADO |
B. Habilitar, modificar ou desabilitar o controle de alterações
O exemplo a seguir habilita o controle de alterações no banco de dados AdventureWorks2022
e define o período de retenção para 2
dias.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
O exemplo a seguir mostra como alterar o período de retenção para 3
dias.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
O exemplo a seguir mostra como desabilitar o controle de alterações no banco de dados AdventureWorks2022
.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. Habilitar o Repositório de Consultas
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
D. Habilitar o Repositório de Consultas com estatísticas de espera
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
E. Habilitar o Repositório de Consultas com opções personalizadas da política de captura
O exemplo a seguir habilita o Repositório de Consultas e configura os parâmetros dele.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Conteúdo relacionado
- Estatísticas
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- nível de compatibilidade ALTER DATABASE
- Espelhamento de banco de dados de ALTER DATABASE
- CREATE DATABASE
- habilitar e desabilitar o controle de alterações (SQL Server)
- drop database (Transact-SQL)
- DEFINIR O NÍVEL DE ISOLAMENTO DA TRANSAÇÃO (Transact-SQL)
- sp_configure
- práticas recomendadas para monitorar cargas de trabalho com o Repositório de Consultas
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintaxe
ALTER DATABASE { database_name }
SET
{
<optionspec> [ ,...n ]
}
;
<option_spec>::=
{
<auto_option>
| <db_encryption_option>
| <query_store_options>
| <result_set_caching>
| <snapshot_option>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON }
}
<db_encryption_option> ::=
{
ENCRYPTION { ON | OFF }
}
<query_store_option> ::=
{
QUERY_STORE { OFF | ON }
}
<result_set_caching_option> ::=
{
RESULT_SET_CACHING { ON | OFF }
}
<snapshot_option> ::=
{
READ_COMMITTED_SNAPSHOT { ON | OFF }
}
Argumentos
database_name
O nome do banco de dados a ser modificado.
<auto_option> ::=
Controla opções automáticas.
AUTO_CREATE_STATISTICS { ON | OFF }
ATIVADO
O otimizador de consulta cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar planos e desempenho de consulta. Estas estatísticas de coluna única são criadas quando o otimizador de consulta compila consultas. As estatísticas de coluna única só são criadas em colunas que ainda não são a primeira de um objeto de estatísticas existente.
O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
OFF
O otimizador de consulta não cria estatísticas em colunas únicas em predicados de consulta quando estiver compilando consultas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
Este comando deve ser executado enquanto estiver conectado ao banco de dados de usuário.
Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on
na exibição de catálogo sys.databases. Também é possível determinar o status examinando a propriedade IsAutoCreateStatistics
da função DATABASEPROPERTYEX.
Para obter mais informações, confira a seção "Usar as opções de estatísticas em todo o banco de dados" em Estatísticas.
<db_encryption_option> ::=
Controla o estado de criptografia do banco de dados.
ENCRYPTION { ON | OFF }
ATIVADO
Define o banco de dados a ser criptografado.
OFF
Define o banco de dados a não ser criptografado.
Para obter mais informações sobre criptografia de banco de dados, consulte TDE (Transparent Data Encryption)e Transparent Data Encryption para o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Azure Synapse Analytics.
Quando a criptografia é habilitada no nível do banco de dados, todos os grupos de arquivos são criptografados. Todos os novos grupos de arquivos herdam a propriedade criptografada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia de banco de dados falhará.
É possível ver o estado da criptografia do banco de dados e o estado do exame de criptografia usando a exibição de gerenciamento dinâmico sys.dm_database_encryption_keys
.
<query_store_option> ::=
Controla se o Repositório de Consultas está habilitado neste data warehouse.
QUERY_STORE { ON | OFF }
ATIVADO
Habilita o Repositório de Consultas.
OFF
Desabilita o Repositório de Consultas. OFF é o valor padrão.
Observação
Para o Azure Synapse Analytics, é necessário executar ALTER DATABASE SET QUERY_STORE
no banco de dados de usuário. Não há suporte para a execução da instrução de outra instância do data warehouse.
Observação
Para o Azure Synapse Analytics, o Repositório de Consultas pode ser habilitado como em outras plataformas, mas não há suporte para opções de configuração adicionais.
<result_set_caching_option> ::=
Aplica-se ao: Azure Synapse Analytics
Controla se o resultado da consulta é armazenado em cache no banco de dados.
RESULT_SET_CACHING { ON | OFF }
ATIVADO
Especifica que os conjuntos de resultados de consulta retornados desse banco de dados são armazenados em cache no banco de dados.
OFF
Especifica que os conjuntos de resultados de consulta retornados desse banco de dados não são armazenados em cache no banco de dados.
Este comando deve ser executado enquanto estiver conectado ao banco de dados master
. A alteração dessa configuração de banco de dados entra em vigor imediatamente. Os custos de armazenamento são incorridos pelo armazenamento em cache dos conjuntos de resultados da consulta. Depois de desabilitar o cache de resultados para um banco de dados, o cache de resultados persistente anteriormente é imediatamente excluído do armazenamento do Azure Synapse.
Execute este comando para verificar a configuração de cache do conjunto de resultados de um banco de dados. Se o cache do conjunto de resultados estiver ativado, is_result_set_caching_on
retornará 1.
SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>
Execute este comando para verificar se uma consulta foi executada usando o resultado armazenado em cache. A coluna result_cache_hit
retorna 1 para acerto de cache, 0 para erro de cache e valores negativos por motivos pelos quais o cache do conjunto de resultados não foi usado. Confira sys.dm_pdw_exec_requests para obter detalhes.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Observação
O cache do conjunto de resultados não deve ser usado em conjunto com DECRYPTBYKEY. Se essa função criptográfica precisar ser usada, verifique se você tem o cache do conjunto de resultados desabilitado (no nível da sessão ou no nível do banco de dados) no momento da execução.
Importante
As operações para criar o cache do conjunto de resultados e recuperar dados do cache acontecem no nó de controle de uma instância do data warehouse. Quando o cache do conjunto de resultados está ATIVADO, a execução de consultas que retornam um conjunto de resultados grande (por exemplo, > de 1 milhão de linhas) pode causar alto uso da CPU no nó de controle e reduzir a resposta geral de consultas na instância. Normalmente, essas consultas são usadas normalmente durante a exploração de dados ou operações de ETL. Para evitar sobrecarregar o nó de controle e causar problemas de desempenho, os usuários devem DESATIVAR o cache do conjunto de resultados no banco de dados antes de executar esses tipos de consultas.
Para obter detalhes sobre o ajuste de desempenho com o cache do conjunto de resultados, confira Diretrizes de ajuste de desempenho.
Permissões
Para definir a opção RESULT_SET_CACHING, um usuário precisa do logon da entidade de segurança no nível do servidor (a criada pelo processo de provisionamento) ou ser um membro da função de banco de dados dbmanager
.
<snapshot_option> ::=
Aplica-se ao: Azure Synapse Analytics
Controla o nível de isolamento da transação de um banco de dados.
READ_COMMITTED_SNAPSHOT { ON | OFF }
ATIVADO
Habilita a opção READ_COMMITTED_SNAPSHOT no nível do banco de dados.
OFF
Desativa a opção READ_COMMITTED_SNAPSHOT no nível do banco de dados.
Este comando deve ser executado enquanto estiver conectado ao banco de dados master
. Ativar ou desativar READ_COMMITTED_SNAPSHOT para um banco de dados de usuário elimina todas as conexões abertas com esse banco de dados. Você deve fazer essa alteração durante uma janela de manutenção de banco de dados ou aguardar até que não haja nenhuma conexão ativa com o banco de dados, exceto pela conexão que executa o comando ALTER DATABASE. O banco de dados não precisa estar no modo de usuário único. A alteração da configuração READ_COMMITTED_SNAPSHOT no nível da sessão não é compatível. Para verificar esta configuração de um banco de dados, configuração a coluna is_read_committed_snapshot_on
em sys.databases
.
Em um banco de dados com READ_COMMITTED_SNAPSHOT habilitado, as consultas podem experimentar um desempenho mais lento devido à verificação de versões se várias versões de dados estiverem presentes. As transações de abertura demorada também podem causar um aumento no tamanho do banco de dados. Esse problema ocorrerá se houver alterações de dados por essas transações que bloqueiam a limpeza de versão.
Permissões
Para definir a opção READ_COMMITTED_SNAPSHOT, um usuário precisa da permissão ALTER no banco de dados.
Exemplos
Verificar a configuração de estatísticas para um banco de dados
SELECT name, is_auto_create_stats_on FROM sys.databases
Habilitar o Repositório de Consultas para um banco de dados
ALTER DATABASE [database_name]
SET QUERY_STORE = ON;
Habilitar o armazenamento em cache do conjunto de resultados de um banco de dados
-- Run this command when connecting to the MASTER database
ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;
Verificar a configuração do armazenamento em cache do conjunto de resultados para um banco de dados
SELECT name, is_result_set_caching_on
FROM sys.databases;
Habilitar a opção READ_COMMITTED_SNAPSHOT para um banco de dados
Execute este comando ao se conectar ao banco de dados master
.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Conteúdo relacionado
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- Elementos da linguagem do Azure Synapse Analytics
- drop database (Transact-SQL)
- Práticas recomendadas para o Azure Synapse Analytics
- Criação de tabelas no Azure Synapse Analytics
Microsoft Fabric
Microsoft Fabric
Use ALTER DATABASE ... SET
para gerenciar um Microsoft Fabric Warehouse.
Sintaxe
-- Microsoft Fabric
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
Comentários
Atualmente, pausar a publicação de logs do Delta Lake e desabilitar o comportamento de V-Order em um warehouse são os únicos usos do ALTER DATABASE ... SET
no Microsoft Fabric.
Permissões
O usuário precisa ser membro das funções de Administrador, Membro ou Colaborador no espaço de trabalho do Fabric.
Exemplos
a. Pausar a publicação de logs do Delta Lake
O comando T-SQL a seguir pausa a publicação do Log do Delta Lake no contexto do warehouse atual.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Para verificar o status atual da publicação do Delta Lake Log em todos os armazéns, do seu workspace, use o seguinte código T-SQL para consultar sys.databases em uma nova janela de consulta:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;