Partilhar via


Opções de ALTER DATABASE SET (Transact-SQL)

Define opções de banco de dados no Microsoft SQL Server, Banco de Dados SQL do Azure e Azure Synapse Analytics. Para outras opções ALTER DATABASE, consulte 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 dentro do banco de dados estão bloqueando a sessão ALTER DATABASE.

Para obter mais informações sobre as convenções de sintaxe, consulte Transact-SQL convenções de sintaxe.

Selecione um produto

Na linha seguinte, selecione o nome do produto em que está interessado. Isso exibe conteúdo diferente aqui nesta página da Web, apropriado para qualquer produto que você selecionar.

* SQL Server *  

de instância gerenciada SQL

 

Servidor SQL

Espelhamento de banco de dados, grupos de disponibilidade Always On e níveis de compatibilidade são opções SET, mas são descritos em artigos separados devido ao seu comprimento. Para obter mais informações, consulte ALTER DATABASE Mirroring, ALTER DATABASE SET HADRe ALTER DATABASE compatibility level.

As configurações de escopo de banco de dados são usadas para definir várias configurações de banco de dados no nível de banco de dados individual. Para obter mais informações, consulte ALTER DATABASE SCOPED CONFIGURATION.

Observação

Muitas opções de conjunto de banco de dados podem ser configuradas para a sessão atual usando instruções SET e geralmente são configuradas por aplicativos quando eles se conectam. As opções de conjunto no nível da sessão substituem os valores 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ção definida.

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.

ATUAL

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Executa a ação no banco de dados atual. CURRENT não é suportado para todas as opções em todos os contextos. Se CURRENT falhar, forneça o nome do banco de dados.

<accelerated_database_recovery> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2019 (15.x))

Permite recuperação acelerada de banco de dados (ADR). O ADR está definido como DESATIVADO 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, o PVS será armazenado no grupo de arquivos PRIMARY. Para obter mais informações, consulte Gerenciar recuperação acelerada de banco de dados.

<auto_option> ::=

Controla as opções automáticas.

AUTO_CLOSE { EM | DESLIGADO }

  • EM

    O banco de dados é desligado de forma limpa e seus recursos são liberados após a saída do último usuário.

    O banco de dados é reaberto automaticamente quando um usuário tenta usá-lo novamente. Por exemplo, esse comportamento ocorre quando um usuário emite uma instrução USE database_name. O banco de dados pode ser desligado corretamente com AUTO_CLOSE definido como ON. Nesse caso, o banco de dados não será reaberto até que um usuário tente usá-lo na próxima vez que o Mecanismo de Banco de Dados for reiniciado.

    Depois que um banco de dados é desligado, na próxima vez que um aplicativo tentar usar o banco de dados, o banco de dados deve primeiro ser aberto e, em seguida, o status alterado para online. Isso pode levar algum tempo e pode resultar em tempos limite de aplicativo.

  • DESLIGADO

    O banco de dados permanece aberto após a saída do último usuário.

    A opção AUTO_CLOSE é útil para bancos de dados da área de trabalho porque permite que os arquivos de banco de dados sejam gerenciados como arquivos regulares. Eles podem ser movidos, copiados para fazer backups ou até mesmo enviados por e-mail para outros usuários. O processo AUTO_CLOSE é assíncrono; Abrir e fechar repetidamente o banco de dados não reduz o desempenho.

Observação

A opção AUTO_CLOSE não está disponível em um banco de dados contido ou no Banco de dados SQL. Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX.

Quando AUTO_CLOSE é definido como ON, algumas colunas no sys.databases exibição de catálogo 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 requer AUTO_CLOSE definido como OFF.

Quando o banco de dados é definido como AUTOCLOSE = ON, uma operação que inicia um desligamento automático do banco de dados limpa o cache de plano para a instância do SQL Server. Limpar o cache do plano causa uma recompilação de todos os planos de execução subsequentes e pode causar uma diminuição súbita e temporária no desempenho da consulta. A partir do SQL Server 2005 (9.x) Service Pack 2, para cada armazenamento de cache limpo no cache de plano, 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, desde 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 há nenhum aplicativo usando o banco de dados. Quando o banco de dados é 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 { EM | DESLIGADO }

  • EM

    O Otimizador de Consultas cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar os planos de consulta e o desempenho da consulta. Essas estatísticas de coluna única são criadas quando o Otimizador de Consultas compila consultas. As estatísticas de coluna única são criadas apenas em colunas que ainda não são a primeira coluna de um objeto de estatísticas existente.

    A configuração padrão é ON. Recomendamos que você use a configuração padrão para a maioria dos bancos de dados.

  • DESLIGADO

    O Otimizador de Consultas não cria estatísticas em colunas únicas em predicados de consulta quando está compilando consultas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Para obter mais informações, consulte a seção "Usando as opções de estatísticas em todo o banco de dados" em Statistics.

INCREMENTAL = LIGADO | DESLIGADO

Aplica-se a: SQL Server (a partir do 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 suportadas. O valor padrão é OFF. Para obter mais informações, consulte CREATE STATISTICS.

AUTO_SHRINK { EM | DESLIGADO }

  • EM

    Os arquivos de banco de dados são candidatos a 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 obter mais informações, consulte Reduzir um banco de dados.

    Tanto os arquivos de dados quanto os arquivos de log podem ser automaticamente reduzidos. AUTO_SHRINK reduz o tamanho do log de transações somente se você definir o banco de dados como modelo de recuperação SIMPLE ou se fizer backup do log. Quando você define AUTO_SHRINK como OFF, os arquivos de banco de dados não são automaticamente reduzidos durante as verificações periódicas de espaço não utilizado.

    A opção AUTO_SHRINK reduz os arquivos quando mais de 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 no qual 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.

  • DESLIGADO

    Os arquivos de banco de dados não são automaticamente reduzidos durante as 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Observação

A opção AUTO_SHRINK não está disponível em um banco de dados contido.

AUTO_UPDATE_STATISTICS { EM | DESLIGADO }

  • EM

    Especifica que o Otimizador de Consultas atualiza as estatísticas quando elas são usadas por uma consulta e quando podem estar desatualizadas. As estatísticas tornam-se desatualizadas depois que as operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou no modo de exibição indexado. O Otimizador de Consultas determina quando as estatísticas podem estar desatualizadas contando o número de modificações de dados desde a última atualização de estatísticas e comparando o número de modificações com um limite. O limite é baseado no número de linhas na tabela ou no modo de exibição indexado.

    O Otimizador de Consultas verifica se há estatísticas desatualizadas antes de compilar uma consulta e executar um plano de consulta em cache. O Otimizador de Consultas usa as colunas, tabelas e exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. O Otimizador de Consultas 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 de data up-to.

    A opção AUTO_UPDATE_STATISTICS aplica-se a estatísticas criadas para índices, colunas únicas em predicados de consulta e estatísticas criadas usando a instrução CREATE STATISTICS. Esta opção também se aplica a estatísticas filtradas.

    O padrão é ON. 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.

  • DESLIGADO

    Especifica que o Otimizador de Consultas não atualiza estatísticas quando elas são usadas por uma consulta. O Otimizador de Consultas também não atualiza estatísticas quando elas podem estar desatualizadas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Para obter mais informações, consulte a seção "Usando as opções de estatísticas em todo o banco de dados" em Statistics.

AUTO_UPDATE_STATISTICS_ASYNC { EM | DESLIGADO }

  • EM

    Especifica que as atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O Otimizador de Consultas não espera que as atualizações de estatísticas sejam concluídas antes de compilar consultas.

    Definir essa opção como ATIVADO não terá efeito, a menos que AUTO_UPDATE_STATISTICS esteja definido como ATIVADO.

    Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é OFF e o Otimizador de Consulta atualiza as estatísticas de forma síncrona.

  • DESLIGADO

    Especifica que as atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O Otimizador de Consultas aguarda a conclusão das atualizações de estatísticas antes de compilar consultas.

    Observação

    Definir esta opção como OFF não terá efeito, a menos que AUTO_UPDATE_STATISTICS esteja definido como ON.

Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_async_on no sys.databases exibição de catálogo.

Para obter mais informações que descrevem quando usar atualizações de estatísticas síncronas ou assíncronas, consulte a seção "Opções de estatísticas" em Statistics.

<automatic_tuning_option> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2017 (14.x))

Ativa ou desativa FORCE_LAST_GOOD_PLANopção ajuste automático. Pode ver o estado desta opção na vista sys.database_automatic_tuning_options.

FORCE_LAST_GOOD_PLAN = { PADRÃO | EM | DESLIGADO }

  • INADIMPLÊNCIA

    O valor padrão para o SQL Server é OFF.

  • EM

    O Mecanismo de Banco de Dados força automaticamente o último plano em boas condições 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 da consulta de Transact-SQL com o plano forçado.

    Se houver ganhos de desempenho, o Mecanismo de Banco de Dados continuará usando o último plano em boas condições. Se os ganhos de desempenho não forem detetados, o Mecanismo de Banco de Dados produzirá um novo plano de consulta. A instrução falhará se o de Repositório de Consultas de não estiver habilitado ou se o Repositório de Consultas não estiver no modo de Leitura-Gravação .

  • DESLIGADO

    O Mecanismo de Banco de Dados relata possíveis regressões de desempenho de consulta causadas por alterações no plano de consulta em sys.dm_db_tuning_recommendations exibição. No entanto, essas recomendações não são aplicadas automaticamente. Os usuários podem monitorar recomendações ativas e corrigir problemas identificados aplicando Transact-SQL scripts mostrados na exibição. O valor padrão é OFF.

<change_tracking_option> ::=

se aplica ao: SQL Server e Banco de Dados SQL do Azure

Controla as opções de controle de alterações. Pode ativar o controlo de alterações, definir opções, alterar opções e desativar o controlo de alterações. Para obter exemplos, consulte a seção Exemplos mais adiante neste artigo.

  • EM

    Habilita o controle de alterações para o banco de dados. Ao ativar o controle de alterações, você também pode definir as opções AUTO CLEANUP e CHANGE RETENTION (ALTERAR RETENÇÃO).

  • AUTO_CLEANUP = { EM | DESLIGADO }

    • EM

      As informações de controle de alterações são removidas automaticamente após o período de retenção especificado.

    • DESLIGADO

      Os dados de controle de alterações não são removidos automaticamente do banco de dados.

  • CHANGE_RETENTION = retention_period { DIAS | HORÁRIO | MINUTOS }

    Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados são removidos somente quando o valor AUTO_CLEANUP está ATIVADO.

    retention_period é um número 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 mínimo de retenção é de 1 minuto. O tipo de retenção padrão é DAYS.

  • OFF Desabilita o controle de alterações para o banco de dados. Desative o controle de alterações em todas as tabelas antes de desabilitar o controle de alterações no banco de dados.

<containment_option> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Controla as opções de contenção do banco de dados.

CONTENÇÃO = { NENHUM | PARCIAL}

  • NENHUM

    O banco de dados não é um banco de dados contido.

  • PARCIAL

    O banco de dados é um banco de dados contido. A configuração da contenção do banco de dados como parcial falhará se o banco de dados tiver replicação, captura de dados de alteração ou controle de alterações habilitado. A verificação de erros para após uma falha. Para obter mais informações sobre bancos de dados contidos, consulte Bancos de dados contidos.

<cursor_option> ::=

Controla as opções do cursor.

CURSOR_CLOSE_ON_COMMIT { EM | DESLIGADO }

  • EM

    Todos os cursores abertos quando você confirma ou reverte uma transação são fechados.

  • DESLIGADO

    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 de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para CURSOR_CLOSE_ON_COMMIT. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão CURSOR_CLOSE_ON_COMMIT como OFF 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 obter mais informações, consulte SET CURSOR_CLOSE_ON_COMMIT.

Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX.

CURSOR_DEFAULT { LOCAL | GLOBAL }

Aplica-se a: SQL Server

Controla se o escopo do cursor usa LOCAL ou GLOBAL.

  • LOCAIS

    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, procedimento armazenado ou gatilho no qual você criou o cursor. O nome do cursor é válido apenas dentro deste âmbito.

    O cursor pode ser referenciado por variáveis de cursor locais no lote, procedimento armazenado ou gatilho, ou um parâmetro OUTPUT de 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 voltar dessa forma, o cursor 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 quando 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 apenas na desconexão. Para obter mais informações, consulte DECLARE CURSOR.

Você pode determinar o status dessa opção examinando a coluna is_local_cursor_default no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

<temporal_history_retention> ::=

TEMPORAL_HISTORY_RETENTION { EM | DESLIGADO }

ON por padrão, mas também automaticamente definido como OFF após a operação de restauração point-in-time. Para obter mais informações, incluindo como habilitar essa configuração, consulte Como configurar a política de retenção.

<data_retention_policy> ::=

Aplica-se apenas ao: Azure SQL Edge.

DATA_RETENTION { EM | DESLIGADO }

  • EM

    Permite a limpeza baseada em política de retenção de dados em um banco de dados.

  • DESLIGADO

    Desabilita a limpeza baseada em política de retenção de dados em um banco de dados.

<database_mirroring>

Aplica-se a: SQL Server

Para obter as descrições dos argumentos, consulte ALTER DATABASE Database Mirroring.

<date_correlation_optimization_option> ::=

Aplica-se a: SQL Server

Controla a opção date_correlation_optimization.

DATE_CORRELATION_OPTIMIZATION { EM | DESLIGADO }

  • EM

    O SQL Server mantém estatísticas de correlação em que uma restrição CHAVE ESTRANGEIRA vincula quaisquer duas tabelas no banco de dados e as tabelas têm colunas de data/hora.

  • DESLIGADO

    As estatísticas de correlação não são mantidas.

Para definir DATE_CORRELATION_OPTIMIZATION como ON, não deve haver conexões ativas com o banco de dados, exceto para a conexão que está executando a instrução ALTER DATABASE. Depois, várias conexões são suportadas.

A configuração atual dessa opção pode ser determinada examinando a coluna is_date_correlation_on no sys.databases exibição de catálogo.

<db_encryption_option> ::=

Controla o estado de criptografia do banco de dados.

ENCRIPTAÇÃO { ON | DESLIGADO | SUSPENDER | CURRÍCULO }

  • EM

    Define o banco de dados a ser criptografado.

  • DESLIGADO

    Define o banco de dados para não ser criptografado.

  • SUSPENDER

    Aplica-se a: SQL Server (a partir do 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.

  • RESUMO

    Aplica-se a: SQL Server (a partir do SQL Server 2019 (15.x))

    Pode ser usado para retomar uma verificação de criptografia pausada anteriormente.

Para obter mais informações sobre criptografia de banco de dados, consulte Transparent data encryption (TDE)e Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance e 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 ficheiros herdam a propriedade encriptada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia do banco de dados falhará.

Você pode ver o estado de criptografia do banco de dados e o estado da verificação de criptografia usando o modo de exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.

<db_state_option> ::=

Aplica-se a: SQL Server

Controla o estado do banco de dados.

  • OFFLINE

    O banco de dados é fechado, desligado corretamente e marcado offline. O banco de dados não pode ser modificado enquanto estiver offline.

  • ONLINE

    A base de dados está aberta e disponível para utilização.

  • EMERGÊNCIA

    O banco de dados está marcado como READ_ONLY, o registro em log está desabilitado e o acesso é limitado aos membros da função de servidor fixa sysadmin. EMERGENCY é usado principalmente para fins de solução de problemas. Por exemplo, um banco de dados marcado como suspeito devido a um arquivo de log corrompido pode ser definido para o estado EMERGENCY. Essa configuração pode habilitar o acesso somente leitura do administrador do sistema ao banco de dados. Somente membros da função de servidor fixa sysadmin podem definir um banco de dados para o estado EMERGENCY.

Requer a permissão ALTER DATABASE para o banco de dados de assunto, para alterar um banco de dados para o estado offline ou de emergência, e o nível do servidor ALTER ANY DATABASE permissão 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX. Para obter mais informações, consulte Estados do Banco de Dados.

Um banco de dados marcado como RESTAURANDO não pode ser definido como OFFLINE, ONLINE ou EMERGENCY. Um banco de dados pode estar no estado RESTAURANDO 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 as 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 definir 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, consulte Statistics.

  • READ_WRITE

    O banco de dados está disponível para operações de leitura e gravação.

Para alterar esse estado, você deve 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 do Banco de Dados SQL do Azure, SET { READ_ONLY | READ_WRITE } está desabilitado.

<db_user_access_option> ::=

Controla o acesso do usuário ao banco de dados.

SINGLE_USER

Aplica-se a: SQL Server

Especifica que apenas um usuário de cada 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, consulte a cláusula WITH <> de rescisão.

O banco de dados permanece no modo SINGLE_USER mesmo se o usuário que definiu a opção sair. Nesse ponto, um usuário diferente, mas apenas um, pode 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 ATIVADO, 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 no sys.databases exibição de catálogo. Se a opção estiver definida como ATIVADO, execute as seguintes tarefas:

  1. Defina AUTO_UPDATE_STATISTICS_ASYNC como OFF.

  2. Verifique se há trabalhos de estatísticas assíncronas ativas consultando o modo de exibição de gerenciamento dinâmico sys.dm_exec_background_job_queue.

Se houver trabalhos ativos, permita que os trabalhos sejam concluídos ou encerre-os manualmente usando KILL STATS JOB.

RESTRICTED_USER

Permite que apenas membros da função de banco de dados fixa db_owner e dbcreator e sysadmin funções de servidor fixas se conectem ao banco de dados. RESTRICTED_USER não limita o seu número. Desconecte todas as conexões com o banco de dados usando o período de tempo especificado pela cláusula de rescisão da instrução ALTER DATABASE. Após a transição do banco de dados para o estado RESTRICTED_USER, as tentativas de conexão por usuários não qualificados são recusadas.

MULTI_USER

Todos os usuários que têm as 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

<delayed_durability_option> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2014 (12.x))

Controla se as transações são totalmente duradouras ou se as transações são totalmente duradouras ou se são duradouras e diferidas.

  • DEFICIENTES

    Todas as transações após SET DISABLED são totalmente duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou declaração de confirmação são ignoradas.

  • PERMITIDO

    Todas as transações após SET ALLOWED são totalmente duráveis ou duráveis atrasadas, dependendo da opção de durabilidade definida no bloco atômico ou na declaração de confirmação.

  • FORÇADO

    Todas as transações após SET FORCED são atrasadas duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou declaração de confirmação são ignoradas.

<external_access_option> ::=

Aplica-se a: SQL Server

Controla se o banco de dados pode ser acessado por recursos externos, como objetos de outro banco de dados.

DB_CHAINING { EM | DESLIGADO }

  • EM

    O banco de dados pode ser a origem ou o destino de uma cadeia de propriedade entre bancos de dados.

  • DESLIGADO

    O banco de dados não pode participar do encadeamento de propriedade entre 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 de dados é 0 (OFF). Quando o encadeamento de propriedade entre bancos de dados é 1 (ON), todos os bancos de dados de usuários podem participar de cadeias de propriedade entre bancos de dados, independentemente do valor dessa opção. Esta opção é definida usando sp_configure.

Para definir essa opção, requer CONTROL SERVER permissão no banco de dados.

A opção DB_CHAINING não pode ser definida nos bancos de dados master, modele tempdb sistema.

Você pode determinar o status dessa opção examinando a coluna is_db_chaining_on no sys.databases exibição de catálogo.

CONFIÁVEL { ON | DESLIGADO }

  • EM

    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 podem acessar recursos fora do banco de dados.

  • DESLIGADO

    Os módulos de banco de dados em um contexto de representação não podem acessar recursos fora do banco de dados.

    TRUSTWORTHY é definido como OFF sempre que o banco de dados é 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. Recomendamos que você nunca defina a opção TRUSTWORTHY como ON para o banco de dados master.

Para definir essa opção, requer CONTROL SERVER permissão no banco de dados.

Você pode determinar o status dessa opção examinando a coluna is_trustworthy_on no sys.databases exibição de catálogo.

DEFAULT_FULLTEXT_LANGUAGE

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Especifica o valor de idioma padrão para colunas indexadas de texto completo.

Importante

Esta opção só é permitida quando CONTENÇÃO tiver sido definido como PARCIAL. Se CONTENÇÃO estiver definido como NONE, ocorrerão erros.

DEFAULT_LANGUAGE

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Especifica o idioma padrão para todos os logons recém-criados. O idioma pode ser especificado fornecendo o ID local (lcid), o nome do idioma ou o alias do idioma. Para obter uma lista de nomes de idiomas e aliases aceitáveis, consulte sys.syslanguages. Esta opção só é permitida quando CONTENÇÃO tiver sido definido como PARCIAL. Se CONTENÇÃO estiver definido como NONE, ocorrerão erros.

NESTED_TRIGGERS

Aplica-se a: SQL Server (a partir do 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. Esta opção só é permitida quando CONTENÇÃO tiver sido definido como PARCIAL. Se CONTENÇÃO estiver definido como NONE, ocorrerão erros.

TRANSFORM_NOISE_WORDS

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Usado para suprimir uma mensagem de erro se palavras de ruído, ou stopwords, causarem uma operação booleana em uma consulta de texto completo falhar. Esta opção só é permitida quando CONTENÇÃO tiver sido definido como PARCIAL. Se CONTENÇÃO estiver definido como NONE, ocorrerão erros.

TWO_DIGIT_YEAR_CUTOFF

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Especifica um número inteiro de 1753 a 9999 que representa o ano de corte para interpretar anos de dois dígitos como anos de quatro dígitos. Esta opção só é permitida quando CONTENÇÃO tiver sido definido como PARCIAL. Se CONTENÇÃO estiver definido como NONE, ocorrerão erros.

<FILESTREAM_option> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Controla as configurações de FileTables.

NON_TRANSACTED_ACCESS = { DESLIGADO | READ_ONLY | COMPLETO }

  • DESLIGADO

    O acesso não transacional aos dados FileTable está desativado.

  • READ_ONLY

    Os dados FILESTREAM em FileTables neste banco de dados podem ser lidos por processos não transacionais.

  • COMPLETO

    Permite o acesso completo e não transacional aos dados FILESTREAM em FileTables está habilitado.

DIRECTORY_NAME = <directory_name>

Um nome de diretório compatível com Windows. Esse nome deve ser exclusivo entre todos os nomes de diretório no nível de 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 agrupamento. Esta opção deve ser definida antes de criar uma FileTable neste banco de dados.

<HADR_options> ::=

Aplica-se a: SQL Server

Consulte ALTER DATABASE SET HADR.

<mixed_page_allocation_option> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2016 (13.x))

Controla se o banco de dados pode criar páginas iniciais usando uma extensão mista para as primeiras oito páginas de uma tabela ou índice.

MIXED_PAGE_ALLOCATION { DESLIGADO | EM }

  • DESLIGADO

    O banco de dados sempre cria páginas iniciais usando extensões uniformes. OFF é o valor padrão.

  • EM

    O banco de dados pode criar páginas iniciais usando extensões mistas.

Essa configuração está ATIVADA para todos os bancos de dados do sistema. O banco de dados do sistema tempdb é o único banco de dados do sistema que suporta OFF.

<PARAMETERIZATION_option> ::=

Controla a opção de parametrização. Para obter mais informações sobre parametrização, consulte o Query Processing Architecture Guide.

PARAMETRIZAÇÃO { SIMPLES | FORÇADO }

  • SIMPLES

    As consultas são parametrizadas com base no comportamento padrão do banco de dados.

  • FORÇADO

    O SQL Server parametriza todas as consultas no banco de dados.

A configuração atual dessa opção pode ser determinada examinando a coluna is_parameterization_forced no sys.databases exibição de catálogo.

<query_store_options> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2016 (13.x))

EM | DESLIGADO [ ( FORÇADO ) ] | LIMPAR [ TODOS ]

Controla se o Repositório de Consultas está habilitado nesse banco de dados e também controla a remoção do conteúdo do Repositório de Consultas. Para obter mais informações, consulte Cenários de uso do repositório de consultas.

  • EM

    Habilita o Repositório de Consultas.

    Muitos recursos novos de desempenho do SQL Server 2022 (16.x), como dicas do Repositório de Consultas, Comentários do CE, Comentários do Grau de Paralelismo (DOP) e Feedback de Concessão de Memória (MGF), 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 que são 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 podem 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 personalizadas, consulte a seção Exemplos mais adiante neste artigo.

  • DESLIGADO [ ( FORÇADO ) ]

    Desativa o Repositório de Consultas. FORCED é opcional. FORCED anula todas as tarefas em segundo plano do Repositório de Consultas em execução e ignora a liberação síncrona quando o Repositório de Consultas está desativado. Faz com que o Repositório de Consultas seja encerrado o mais rápido possível. FORCED aplica-se ao SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 e compilações 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..

  • LIMPAR [ TODOS ]

    Remove dados relacionados a consultas do Repositório de Consultas. TUDO é opcional. ALL remove dados e metadados relacionados a consultas do 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 informações de estatísticas de execução do plano de consulta e do tempo de execução.

READ_ONLY

As informações podem ser lidas no 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 é tipo bigint. O valor padrão é 30.

DATA_FLUSH_INTERVAL_SECONDS

Determina a frequência com que os dados gravados no Repositório de Consultas são mantidos no disco. Para otimizar o desempenho, os dados coletados pelo Repositório de Consultas são gravados de forma assíncrona no disco. A frequência com que essa transferência assíncrona ocorre é configurada usando o argumento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS é 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 é tipo bigint. O valor padrão é 100 MB para SQL Server (SQL Server 2016 (13.x) a SQL Server 2017 (14.x)). A partir do SQL Server 2019 (15.x), o valor padrão é 1000 MB.

MAX_STORAGE_SIZE_MB limite não é rigorosamente aplicado. 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 de diálogo Repositório de Consultas do Management Studio Intervalo de Liberação de Dados. O valor padrão do intervalo é 900 segundos (ou 15 minutos).

Se o Repositório de Consultas tiver violado o limite de MAX_STORAGE_SIZE_MB entre as verificações de tamanho de armazenamento, ele passará para o modo somente leitura. Se SIZE_BASED_CLEANUP_MODE estiver habilitado, o mecanismo de limpeza para impor o limite de MAX_STORAGE_SIZE_MB também será acionado.

Depois que o espaço suficiente tiver sido limpo, o modo de Repositório de Consultas alternará automaticamente de volta 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, provavelmente deve repensar e otimizar sua carga de trabalho para reutilizar planos de consulta (por exemplo, usando parametrização forçadaou ajustar as configurações do Repositório de Consultas. A partir do SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, você pode definir QUERY_CAPTURE_MODE como CUSTOM para obter controle adicional sobre a política de captura de consulta.

INTERVAL_LENGTH_MINUTES

Determina o intervalo de tempo no qual os dados de estatísticas de execução em tempo de execução são agregados ao Repositório de Consultas. Para otimizar o uso do espaço, as estatísticas de execução de tempo de execução no repositório de estatísticas de tempo de execução são agregadas em uma janela de tempo fixa. Essa janela de tempo fixa é configurada usando o argumento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES é tipo bigint. O valor padrão é 60.

SIZE_BASED_CLEANUP_MODE { AUTO | DESLIGADO }

Controla se a limpeza é ativada automaticamente quando a quantidade total de dados se aproxima do tamanho máximo.

  • AUTOMÁTICO

    A limpeza baseada em tamanho é ativada automaticamente quando o tamanho no disco atinge 90% de MAX_STORAGE_SIZE_MB. A limpeza baseada em tamanho remove primeiro as consultas mais antigas e mais baratas. Para aproximadamente a 80% de MAX_STORAGE_SIZE_MB. Esse valor é o valor de configuração padrão.

  • DESLIGADO

    A limpeza baseada no tamanho não é ativada automaticamente.

SIZE_BASED_CLEANUP_MODE é tipo nvarchar.

QUERY_CAPTURE_MODE { TODOS | AUTO | PERSONALIZADO | NENHUM }

Designa o modo de captura de consulta atualmente ativo. Cada modo define políticas específicas de captura de consulta. QUERY_CAPTURE_MODE é tipo nvarchar.

Observação

Cursores, consultas dentro de Procedimentos Armazenados e consultas compiladas nativamente são sempre capturadas quando o modo de captura de consulta é definido como ALL, AUTO ou CUSTOM.

  • TUDO

    Captura todas as consultas. ALL é o valor de configuração padrão do SQL Server (SQL Server 2016 (13.x) a SQL Server 2017 (14.x)).

  • AUTOMÁTICO

    Capture consultas relevantes com base na contagem de execução e no consumo de recursos. Este é o valor de configuração padrão para o SQL Server (começando com o SQL Server 2019 (15.x)) e o Banco de Dados SQL do Azure.

  • NENHUM

    Pare de capturar novas consultas. O Repositório de Consultas continua a coletar estatísticas de compilação e tempo de execução para consultas que já foram capturadas. Use essa configuração com cuidado, pois você pode perder a captura de consultas importantes.

  • À MEDIDA

    Aplica-se a: SQL Server (a partir do SQL Server 2019 (15.x))

    Permite controlar as opções QUERY_CAPTURE_POLICY. As políticas de captura personalizadas podem ajudar o 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 é tipo int. O valor padrão é 200.

WAIT_STATS_CAPTURE_MODE { EM | DESLIGADO }

Aplica-se a: SQL Server (a partir do SQL Server 2017 (14.x)))

Controla se as estatísticas de espera são capturadas por consulta.

  • EM

    As informações de estatísticas de espera por consulta são capturadas. Esse valor é o valor de configuração padrão.

  • DESLIGADO

    As informações de estatísticas de espera por consulta não são capturadas.

<query_capture_policy_option_list> :: =

Aplica-se a: SQL Server (a partir do SQL Server 2019 (15.x))

Controla o Repositório de Consultas as opções de política de captura. Exceto para STALE_CAPTURE_POLICY_THRESHOLD, essas opções definem as condições de OR que precisam acontecer para que as consultas sejam capturadas no valor definido de Limite de Política de Captura Estática.

A partir do SQL Server 2019 (15.x), a configuração QUERY_CAPTURE_MODE = AUTO captura os detalhes do Repositório de Consultas quando qualquer um dos seguintes limites é atingido:

  • EXECUTION_COUNT = 30 execuções = contagem de execuções
  • TOTAL_COMPILE_CPU_TIME_MS = 1 segundo = tempo de compilação em milissegundos
  • TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = tempo de execução da CPU 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 = inteiro { DIAS | HORÁRIO }

    Define o período do intervalo de avaliação para determinar se uma consulta deve ser capturada. O padrão é 1 dia e pode ser definido de 1 hora a sete dias.

  • EXECUTION_COUNT = inteiro

    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 de Política de Captura Obsoleta padrão, uma consulta deve ser executada pelo menos 30 vezes em um dia para ser persistida no Repositório de Consultas. EXECUTION_COUNT é tipo int.

  • TOTAL_COMPILE_CPU_TIME_MS = inteiro

    Define o tempo total de CPU de compilação decorrido usado por uma consulta durante o período de avaliação. O padrão é 1000, o que significa que, para o Limite de Política de Captura Obsoleta padrão, uma consulta deve ter um total de pelo menos um segundo de tempo de CPU gasto durante a compilação da consulta em um dia para ser persistida no Repositório de Consultas. TOTAL_COMPILE_CPU_TIME_MS é tipo int.

  • TOTAL_EXECUTION_CPU_TIME_MS = inteiro

    Define o tempo total de execução da CPU usado por uma consulta durante o período de avaliação. O padrão é 100, o que significa que, para o Limite de Política de Captura Obsoleta padrão, uma consulta deve ter um total de pelo menos 100 ms de tempo de CPU gasto durante a execução em um dia para ser persistida no Repositório de Consultas. TOTAL_EXECUTION_CPU_TIME_MS é tipo int.

<recovery_option> ::=

Aplica-se a: SQL Server

Controla as opções de recuperação do banco de dados e a verificação de erros de E/S de disco.

  • COMPLETO

    Fornece recuperação total após falha de mídia usando backups de log de transações. Se um arquivo de dados estiver danificado, a recuperação de mídia pode restaurar todas as transações confirmadas. Para obter mais informações, consulte Modelos de recuperação.

  • BULK_LOGGED

    Fornece recuperação após falha de mídia. Combina o melhor desempenho e a menor quantidade de uso de espaço de log para determinadas operações de grande escala ou 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 dessas operações é mínimo. Para obter mais informações, consulte Modelos de recuperação.

  • SIMPLES

    Uma estratégia de backup simples que usa espaço mínimo de log é fornecida. O espaço de log pode ser reutilizado automaticamente quando não for mais necessário para a recuperação de falhas do servidor. Para obter mais informações, consulte Modelos de recuperação.

    Importante

    O modelo de recuperação simples é mais fácil de gerenciar do que os outros dois modelos, mas às custas de uma maior exposição à perda de dados se um arquivo de dados for danificado. Todas as alterações desde o banco de dados mais recente ou o backup diferencial do banco de dados são perdidas e devem 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

TORN_PAGE_DETECTION { EM | DESLIGADO }

  • EM

    Páginas incompletas podem ser detetadas pelo Mecanismo de Banco de Dados.

  • DESLIGADO

    Páginas incompletas não podem ser detetadas pelo Mecanismo de Banco de Dados.

Importante

A estrutura da sintaxe TORN_PAGE_DETECTION ON | OFF será removido em uma versão futura do SQL Server. Evite usar essa estrutura de sintaxe em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam a estrutura de sintaxe. Em vez disso, use a opção PAGE_VERIFY.

PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NENHUM }

Descobre páginas de banco de dados danificadas causadas por erros de caminho de E/S de disco. Erros de caminho de E/S de disco podem ser a causa de problemas de corrupção de banco de dados. Esses erros geralmente são causados por falhas de energia ou falhas de hardware de disco que ocorrem no momento em que a página é gravada no disco.

  • SOMA DE VERIFICAÇÃO

    Calcula uma soma de verificação sobre o conteúdo de toda a página e armazena o valor no cabeçalho da página quando uma página é gravada no disco. Quando a página é lida do disco, a soma de verificação é recalculada e comparada com o valor da soma de verificação armazenado no cabeçalho da página. Se os valores não corresponderem, a mensagem de erro 824 (indicando uma falha de soma de verificação) será relatada ao log de erros do SQL Server e ao log de eventos do Windows. Uma falha de soma de verificação indica um problema de caminho de E/S. Para determinar a causa raiz requer investigação do hardware, drivers de firmware, BIOS, drivers de filtro (como software de ví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 do banco de dados de 8 kilobytes (KB) e é armazenado no cabeçalho da página do banco de dados quando a página é gravada no disco. Quando a página é lida do disco, os bits rasgados armazenados no cabeçalho da página são comparados com as informações reais do setor da página.

    Valores incompatíveis indicam que apenas parte da página foi gravada no disco. Nessa situação, a mensagem de erro 824 (indicando um erro de página rasgada) é relatada para o log de erros do SQL Server e o log de eventos do Windows. As páginas rasgadas geralmente são detetadas pela recuperação do banco de dados se for realmente uma gravação incompleta de uma página. No entanto, outras falhas de caminho de E/S podem causar uma página rasgada a qualquer momento.

  • NENHUM

    As gravações de página de 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 que um valor de soma de verificação ou TORN_PAGE_DETECTION esteja 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 usuário ou banco de dados do sistema é atualizado para o SQL Server 2005 (9.x) ou uma versão posterior, o valor PAGE_VERIFY (NONE ou TORN_PAGE_DETECTION) não é alterado. Recomendamos que você mude 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 para o banco de dados tempdb é CHECKSUM para novas instalações do SQL Server. Ao atualizar uma instalação do SQL Server, o valor padrão permanece NONE. A opção pode ser modificada. Recomendamos que você use CHECKSUM para o banco de dados tempdb.

  • TORN_PAGE_DETECTION pode usar menos recursos, mas fornece um subconjunto mínimo da proteção CHECKSUM.

  • PAGE_VERIFY pode ser definido sem colocar o banco de dados offline, bloqueá-lo ou impedir a simultaneidade nesse banco de dados.

  • CHECKSUM é mutuamente exclusivo para TORN_PAGE_DETECTION. Ambas as opções não podem ser ativadas ao mesmo tempo.

Quando uma página rasgada ou uma falha de soma de verificação é detetada, você pode recuperar restaurando os dados ou potencialmente reconstruindo o índice se a falha for limitada apenas a páginas de índice. Se você encontrar uma falha de soma de verificação, para determinar o tipo de página ou páginas de banco de dados afetadas, execute DBCC CHECKDB. Para obter mais informações sobre opções de restauração, consulte RESTORE Arguments. Embora a restauração dos dados resolva o problema de corrupção de dados, a causa raiz (por exemplo, falha de hardware do 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 falhe com uma soma de verificação, 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, consulte:

A configuração atual dessa opção pode ser determinada examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX.

<remote_data_archive_option> ::=

Aplica-se a: SQL Server (a partir do 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 Stretch Database 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 novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ATIVADO | DESLIGADO } ) | DESLIGADO

  • EM

    Habilita o Stretch Database para o banco de dados. Para obter mais informações, incluindo pré-requisitos adicionais, consulte Habilitar o Stretch Database para um banco de dados.

    Requer permissão db_owner para habilitar o Stretch Database para uma tabela. Requer permissões de db_owner e CONTROL DATABASE para habilitar o Stretch Database para um banco de dados.

    • SERVIDOR = <server_name>

      Especifica o endereço do servidor do Azure. Inclua a parte .database.windows.net do nome. Por exemplo, MyStretchDatabaseServer.database.windows.net.

    • CREDENCIAL = <db_scoped_credential_name>

      Especifica a credencial de escopo do banco de dados que a instância do SQL Server usa para se conectar ao servidor do Azure. Certifique-se de que a credencial existe antes de executar este comando. Para obter mais informações, consulte CREATE DATABASE SCOPED CREDENTIAL.

    • FEDERATED_SERVICE_ACCOUNT = { EM | DESLIGADO }

      Você pode usar uma conta de serviço federada para o SQL Server local para se comunicar com o servidor remoto do Azure quando as seguintes condições forem todas verdadeiras.

      • A conta de serviço sob a 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 Ative Directory é federado com o Microsoft Entra ID.
      • O servidor remoto do Azure está configurado para dar suporte à autenticação do Microsoft Entra.
      • A conta de serviço sob a qual a instância do SQL Server está sendo executada deve ser configurada como uma conta dbmanager ou sysadmin no servidor remoto do Azure.

      Se você especificar que a conta de serviço federada está ON, não poderá especificar também o argumento CREDENTIAL. Forneça o argumento CREDENTIAL se especificar OFF.

  • DESLIGADO

    Desabilita o Stretch Database para o banco de dados. Para saber mais, veja Desabilitar o 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 mais tabelas habilitadas para o Stretch Database. Depois de desativar o Stretch Database, a migração de dados é interrompida. Além disso, os resultados da consulta não incluem mais resultados de tabelas remotas.

    A desativação do Stretch Database não remove o banco de dados remoto. Para excluir o banco de dados remoto, solte-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 apoiado por memória de classe de armazenamento (NVDIMM-N armazenamento não volátil), também conhecido como buffer de log persistente. Para obter mais informações, consulte aceleração de latência de confirmação de transação usando de memória de classe de armazenamento e Adicionar buffer de log persistente a um banco de dados.

<service_broker_option> ::=

Aplica-se a: SQL Server

Controla as seguintes opções do Service Broker: habilita ou desabilita a entrega de mensagens, define um novo identificador do Service Broker ou define prioridades de conversação como ATIVADO ou DESATIVADO.

ENABLE_BROKER

Especifica que o Service Broker está habilitado para o banco de dados especificado. A entrega de mensagens é iniciada e o sinalizador is_broker_enabled é definido como true no sys.databases exibição de catálogo. O banco de dados mantém o identificador existente do Service Broker. O agente de serviços não pode ser habilitado enquanto o banco de dados for o principal 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 Service Broker 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 Service Broker no banco de dados msdb, primeiro pare o SQL Server Agent para que o Service Broker possa obter o bloqueio necessário.

DISABLE_BROKER

Especifica que o Service Broker está desabilitado para o banco de dados especificado. A entrega de mensagens é interrompida e o sinalizador é definido como false na exibição de catálogo sys.databases . O banco de dados mantém o identificador existente do Service Broker.

NEW_BROKER

Especifica que o banco de dados deve receber um novo identificador de broker. O banco de dados atua como um novo agente de serviços. Como tal, todas as conversas existentes no banco de dados são imediatamente removidas sem produzir mensagens de diálogo finais. Qualquer rota que faça referência ao identificador antigo do Service Broker deve ser recriada com o novo identificador.

ERROR_BROKER_CONVERSATIONS

Especifica que a entrega de mensagens do Service Broker está habilitada. Essa configuração preserva o identificador existente do Service Broker para o banco de dados. O Service Broker termina todas as conversas no banco de dados com um erro. Essa configuração permite que os aplicativos executem limpeza regular para conversas existentes.

HONOR_BROKER_PRIORITY { EM | DESLIGADO }

  • EM

    As operações de envio levam em consideração 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 às quais são atribuídos níveis de baixa prioridade.

  • DESLIGADO

    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 novas caixas de diálogo ou caixas de diálogo que não têm mensagens esperando para serem enviadas. As caixas de diálogo com mensagens a serem enviadas quando ALTER DATABASE é executado não pegam a nova configuração até que algumas das mensagens para a caixa de diálogo sejam enviadas. O tempo antes de todas as caixas de diálogo começarem a usar a nova configuração pode variar consideravelmente.

A configuração atual dessa propriedade é relatada na coluna is_broker_priority_honored no sys.databases exibição de catálogo.

<snapshot_option> ::=

Calcula o nível de isolamento da transação.

ALLOW_SNAPSHOT_ISOLATION { EM | DESLIGADO }

  • EM

    Habilita a opção Snapshot no nível do banco de dados. Quando habilitado, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usa o Snapshot Isolation. Quando essa opção estiver ativada, as transações poderão especificar o nível de isolamento da transação SNAPSHOT. Quando uma transação é executada no nível de isolamento SNAPSHOT, todas as instruções veem um instantâneo de dados como ele existe no início da transação. Se uma transação em execução no nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definida 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 estiver OFF.

  • DESLIGADO

    Desativa a opção Snapshot no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.

Quando você define 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 retornar rapidamente, use sys.dm_tran_ative_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 em que estava quando ALTER DATABASE foi iniciado. O sys.databases exibição de catálogo indica o estado das 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 tenta novamente a operação.

Não é possível alterar o estado do ALLOW_SNAPSHOT_ISOLATION se o banco de dados estiver 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.

Você pode alterar as configurações de ALLOW_SNAPSHOT_ISOLATION para os bancos de dados master, model, msdbe tempdb. A configuração é mantida sempre que a instância do Mecanismo de Banco de Dados é interrompida e reiniciada se você alterar a configuração para tempdb. Se você alterar a configuração para model, essa configuração se tornará o padrão para todos os novos bancos de dados criados, exceto para tempdb.

A opção está ATIVADA por padrão para os bancos de dados master e msdb.

A configuração atual dessa opção pode ser determinada examinando a coluna snapshot_isolation_state no sys.databases exibição de catálogo.

READ_COMMITTED_SNAPSHOT { EM | DESLIGADO }

  • EM

    Habilita Read-Committed opção Snapshot no nível do banco de dados. Quando habilitado, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usa o Snapshot Isolation. Quando essa opção estiver habilitada, as transações que especificam o nível de isolamento confirmado de leitura usam o controle de versão de linha em vez de bloqueio. Todas as instruções veem um instantâneo dos dados como ele existe no início da instrução quando uma transação é executada no nível de isolamento READ COMMITTED .

  • DESLIGADO

    Desativa Read-Committed opção 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 ON ou OFF, não deve haver conexões ativas com o banco de dados, exceto para a conexão que executa o comando ALTER DATABASE. No entanto, 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 estiver 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, tempdbou msdb. Se você alterar a configuração para model, essa configuração se tornará o padrão para todos os novos bancos de dados criados, exceto para tempdb.

A configuração atual dessa opção pode ser determinada examinando a coluna is_read_committed_snapshot_on no sys.databases exibição de catálogo.

Advertência

Quando uma tabela é criada com DURABILITY = SCHEMA_ONLY, e READ_COMMITTED_SNAPSHOT é subsequentemente alterada usando ALTER DATABASE, os dados na tabela são perdidos.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { EM | DESLIGADO }

Aplica-se a: SQL Server (a partir do SQL Server 2014 (12.x))

  • EM

    Quando o nível de isolamento da transação é definido como qualquer nível de isolamento inferior ao SNAPSHOT, todas as operações de Transact-SQL interpretadas em tabelas com otimização de memória são executadas sob isolamento SNAPSHOT. Exemplos de níveis de isolamento inferiores ao snapshot são READ COMMITTED ou READ UNCOMMITTED. Essas operações são executadas se o nível de isolamento da transação é definido explicitamente no nível da sessão ou se o padrão é usado implicitamente.

  • DESLIGADO

    Não eleva o nível de isolamento de transação para operações interpretadas Transact-SQL em tabelas com otimização de memória.

Não é possível alterar o estado do MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se o banco de dados estiver OFFLINE.

A opção padrão é OFF.

A configuração atual dessa opção pode ser determinada examinando a coluna is_memory_optimized_elevate_to_snapshot_on no sys.databases exibição de catálogo.

<sql_option> ::=

Controla as opções de conformidade ANSI no nível do banco de dados.

ANSI_NULL_DEFAULT { EM | DESLIGADO }

Determina o valor padrão, NULL ou NOT NULL, de uma coluna ou tipo CLR definido pelo usuário para o qual a anulabilidade não está explicitamente definida nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem regras de restrição, seja qual for essa configuração.

  • EM

    O valor padrão para uma coluna indefinida é NULL.

  • DESLIGADO

    O valor padrão para uma coluna indefinida é NOT NULL.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão no nível do banco de dados para ANSI_NULL_DEFAULT. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_NULL_DEFAULT para 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 obter mais informações, consulte SET ANSI_NULL_DFLT_ON.

Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o padrão do banco de dados para NULL.

Você pode determinar o status dessa opção examinando a coluna is_ansi_null_default_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_NULLS { EM | DESLIGADO }

  • EM

    Todas as comparações com um valor nulo são avaliadas como UNKNOWN.

  • DESLIGADO

    Comparações de valores não-Unicode com um valor nulo avaliam como TRUE se ambos os valores forem NULL.

Importante

Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para ANSI_NULLS. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_NULLS para 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 obter mais informações, consulte SET ANSI_NULLS.

Importante

SET ANSI_NULLS também deve ser definido como ON quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_PADDING { EM | DESLIGADO }

  • EM

    As cadeias de caracteres são acolchoadas no mesmo comprimento antes da conversão. Também acolchoado no mesmo comprimento antes de inserir em um varchar ou tipo de dados nvarchar.

  • DESLIGADO

    Insere espaços em branco à direita em valores de caracteres em varchar ou colunas nvarchar. Também deixa zeros à direita em valores binários que são inseridos em colunas de varbinárias. Os valores não são acolchoados ao comprimento 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 estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Recomendamos que você sempre defina ANSI_PADDING como ON. ANSI_PADDING deve estar ATIVADO quando você cria ou manipula índices em colunas computadas ou exibições indexadas.

char(n) e binário(n) colunas que permitem nulos são acolchoadas ao comprimento da coluna quando ANSI_PADDING está definido como ON. Os espaços em branco e os zeros à direita são cortados quando ANSI_PADDING está DESATIVADO. char(n) e binário(n) colunas que não permitem nulos são sempre acolchoadas ao comprimento da coluna.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão no nível do banco de dados para ANSI_PADDING. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_PADDING para 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 obter mais informações, consulte SET ANSI_PADDING.

Você pode determinar o status dessa opção examinando a coluna is_ansi_padding_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_WARNINGS { EM | DESLIGADO }

  • EM

    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 aparecem em funções agregadas.

  • DESLIGADO

    Nenhum aviso é gerado e valores nulos são retornados quando condições como divisão por zero ocorrem.

Importante

SET ANSI_WARNINGS deve ser definido como ON quando você cria ou faz alterações em índices em colunas computadas ou exibições indexadas.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para ANSI_WARNINGS. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_WARNINGS para 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 obter mais informações, consulte SET ANSI_WARNINGS.

Você pode determinar o status dessa opção examinando a coluna is_ansi_warnings_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ARITHABORT { EM | DESLIGADO }

  • EM

    Uma consulta é encerrada quando ocorre um erro de estouro ou divisão por zero durante a execução da consulta.

  • DESLIGADO

    Uma mensagem de aviso é exibida quando ocorre um desses erros. A consulta, o lote ou a transação continua a ser processada como se nenhum erro ocorresse, mesmo que um aviso fosse exibido.

Importante

SET ARITHABORT deve ser definido como ON quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade 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 { EM | DESLIGADO }

  • EM

    O resultado de uma operação de concatenação é NULL quando qualquer operando é NULL. Por exemplo, concatenar a cadeia de caracteres "Isto é" e NULL retorna o valor NULL em vez do valor "Isto é".

  • DESLIGADO

    O valor nulo é tratado como uma cadeia de caracteres vazia.

Importante

CONCAT_NULL_YIELDS_NULL deve ser definido como ATIVADO quando você cria ou faz alterações em índices em colunas computadas ou exibições indexadas.

Em versões futuras do SQL Server, CONCAT_NULL_YIELDS_NULL sempre estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO dispararão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para CONCAT_NULL_YIELDS_NULL. Por padrão, os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão CONCAT_NULL_YIELDS_NULL para ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL.

Você pode determinar o status dessa opção examinando a coluna is_concat_null_yields_null_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

NUMERIC_ROUNDABORT { EM | DESLIGADO }

  • EM

    Um erro é gerado quando ocorre perda de precisão em uma expressão.

  • DESLIGADO

    A perda de precisão não gera uma mensagem de erro e o resultado é arredondado para a precisão da coluna ou variável que armazena o resultado.

    Importante

    NUMERIC_ROUNDABORT deve ser definido como DESATIVADO quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

QUOTED_IDENTIFIER { EM | DESLIGADO }

  • EM

    Aspas duplas podem ser usadas para incluir identificadores delimitados.

    Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores cotados não precisam seguir as regras Transact-SQL para identificadores. Podem ser palavras-chave e incluir caracteres que não são permitidos nos identificadores de Transact-SQL. Se uma aspa dupla (") fizer parte do identificador, ela pode ser representada por duas aspas duplas ("").

  • DESLIGADO

    Os identificadores não podem estar entre aspas e devem seguir todas as regras Transact-SQL para identificadores. Os 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 IDENTIFICADOR COTADO é sempre armazenada como ATIVADA nos metadados da tabela. A opção é armazenada mesmo se estiver definida como OFF quando a tabela é criada.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para QUOTED_IDENTIFIER. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão QUOTED_IDENTIFIER para ON, por padrão. Os clientes executam a instrução quando você se conecta a uma instância do SQL Server. Para obter mais informações, consulte SET QUOTED_IDENTIFIER.

Você pode determinar o status dessa opção examinando a coluna is_quoted_identifier_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

RECURSIVE_TRIGGERS { EM | DESLIGADO }

  • EM

    É permitido o disparo recursivo de gatilhos AFTER.

  • DESLIGADO

    Você pode determinar o status dessa opção examinando a coluna is_recursive_triggers_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Observação

Somente a recursão direta é impedida quando RECURSIVE_TRIGGERS está definido como OFF. Para desabilitar a recursão indireta, você também deve definir a opção de servidor de gatilhos aninhados como 0.

Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX.

<suspend_for_snapshot_backup> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2022 (16.x))

Suspende bancos de dados para backup de snapshot. 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 dessuspende bancos de dados. Padrão OFF.

MODO = COPY_ONLY

Opcional. Usa COPY_ONLY modo.

<target_recovery_time_option> ::=

Aplica-se a: SQL Server (a partir do SQL Server 2012 (11.x))

Especifica a frequência dos 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 é 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. A Microsoft recomenda 1 minuto para a maioria dos sistemas.

TARGET_RECOVERY_TIME = target_recovery_time { SEGUNDOS | MINUTOS }

  • target_recovery_time

    Especifica o limite máximo no tempo para recuperar o banco de dados especificado no caso de uma falha. target_recovery_time é tipo int.

  • SEGUNDOS

    Indica que target_recovery_time é expresso como o número de segundos.

  • ATA

    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 do banco de dados.

COM <terminação> ::=

Especifica quando reverter transações incompletas quando o banco de dados é transferido de um estado para outro. Se a cláusula de rescisão for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Apenas uma cláusula de rescisão pode ser especificada, e ela segue as cláusulas SET.

Observação

Nem todas as opções de banco de dados usam a cláusula WITH <terminação>. Para obter mais informações, consulte a tabela em Opções de configuração da seção "Observações" deste artigo.

  • REVERSÃO APÓS inteiro [SEGUNDOS] | REVERSÃO IMEDIATA

    Especifica se a reversão deve ser revertida 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 que as transações sejam confirmadas ou revertidas por conta própria.

Definir opções

Para recuperar as configurações atuais para opções de banco de dados, use o sys.databases exibição de catálogo 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 WITH <terminação> 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 WITH <> de rescisão
<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 plano para a instância do SQL Server é limpo definindo uma das seguintes opções:

OFFLINE

ONLINE

MODIFY_NAME

COLISÃO

READ_ONLY

READ_WRITE

MODIFICAR O PADRÃO DO GRUPO DE ARQUIVOS

MODIFICAR READ_WRITE GRUPO DE ARQUIVOS

MODIFICAR READ_ONLY GRUPO DE ARQUIVOS

O cache do plano também é liberado nos seguintes cenários.

  • Um banco de dados tem a opção AUTO_CLOSE banco de dados definida como ON. Quando nenhuma conexão de usuário faz referência ou usa o banco de dados, a tarefa em segundo plano tenta fechar e desligar o banco de dados automaticamente.
  • Você executa várias consultas em um banco de dados que tem opções padrão. Em seguida, o banco de dados é descartado.
  • Um instantâneo de banco de dados para um banco de dados de origem é descartado.
  • Você recria com êxito o log de transações de um banco de dados.
  • Você restaura um backup de banco de dados.
  • Desanexar um banco de dados.

Limpar o cache do plano causa uma recompilação de todos os planos de execução subsequentes e pode causar uma diminuição súbita e temporária no desempenho da consulta. Para cada armazenamento de cache limpo no cache de plano, 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, desde que o cache seja liberado dentro desse intervalo de tempo.

Exemplos

Um. Definir 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 para SINGLE_USER modo para obter acesso exclusivo. 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 rescisão WITH ROLLBACK IMMEDIATE na primeira instrução ALTER DATABASE. Todas as transações incompletas são revertidas e quaisquer 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.

Designação snapshot_isolation_state Descrição
[database_name] 1 EM

D. Ativar, modificar ou desativar o controlo de alterações

O exemplo a seguir habilita o controle de alterações para o banco de dados AdventureWorks2022 e define o período de retenção como 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 para o banco de dados AdventureWorks2022.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

E. Habilitar o repositório de consultas

Aplica-se a: SQL Server (a partir do SQL Server 2016 (13.x))

O exemplo a seguir habilita o Repositório de Consultas e configura seus parâmetros.

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 a: SQL Server (a partir do SQL Server 2017 (14.x))

O exemplo a seguir habilita o Repositório de Consultas e configura seus parâmetros.

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 de política de captura personalizadas

Aplica-se a: SQL Server (a partir do SQL Server 2019 (15.x))

O exemplo a seguir habilita o Repositório de Consultas e configura seus parâmetros.

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
      )
    );

* Banco de dados SQL *  

de instância gerenciada SQL

 

Banco de dados SQL

Os níveis de compatibilidade são opções SET, mas são descritos em nível de compatibilidade ALTER DATABASE.

Observação

Muitas opções de conjunto de banco de dados podem ser configuradas para a sessão atual usando instruções SET e geralmente são configuradas por aplicativos quando eles se conectam. As opções de conjunto no nível da sessão substituem os valores 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ção definida.

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.

  • ATUAL

    CURRENT executa a ação no banco de dados atual. CURRENT não é suportado para todas as opções em todos os contextos. Se CURRENT falhar, forneça o nome do banco de dados.

<auto_option> ::=

Controla as opções automáticas.

AUTO_CREATE_STATISTICS { EM | DESLIGADO }

  • EM

    O Otimizador de Consultas cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar os planos de consulta e o desempenho da consulta. Essas estatísticas de coluna única são criadas quando o Otimizador de Consultas compila consultas. As estatísticas de coluna única são criadas apenas em colunas que ainda não são a primeira coluna de um objeto de estatísticas existente.

    O padrão é ON. Recomendamos que você use a configuração padrão para a maioria dos bancos de dados.

  • DESLIGADO

    O Otimizador de Consultas não cria estatísticas em colunas únicas em predicados de consulta quando está compilando consultas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Para obter mais informações, consulte a seção "Opções de estatísticas" em Statistics.

INCREMENTAL = LIGADO | DESLIGADO

Defina AUTO_CREATE_STATISTICS como ON e INCREMENTAL como ON. Essa configuração cria estatísticas criadas automaticamente como incrementais sempre que estatísticas incrementais são suportadas. O valor padrão é OFF. Para obter mais informações, consulte CREATE STATISTICS.

AUTO_SHRINK { EM | DESLIGADO }

  • EM

    Os arquivos de banco de dados são candidatos a 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 obter mais informações, consulte Reduzir um banco de dados.

Tanto o arquivo de dados quanto os arquivos de log podem ser automaticamente reduzidos. AUTO_SHRINK reduz o tamanho do log de transações somente se você definir o banco de dados como modelo de recuperação SIMPLE ou se fizer backup do log. Quando definido como OFF, os arquivos de banco de dados não são automaticamente reduzidos 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 de 25% do arquivo contém espaço não utilizado. A opção faz com que o arquivo diminua para um de dois tamanhos. Encolhe para o que for maior:

  • O tamanho em que 25 por cento do ficheiro é espaço não utilizado
  • O tamanho do arquivo quando ele foi criado

Não é possível reduzir um banco de dados somente leitura.

  • DESLIGADO

    Os arquivos de banco de dados não são automaticamente reduzidos durante as 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Observação

A opção AUTO_SHRINK não está disponível em um banco de dados contido.

AUTO_UPDATE_STATISTICS { EM | DESLIGADO }

  • EM

    Especifica que o Otimizador de Consultas atualiza as estatísticas quando elas são usadas por uma consulta e quando podem estar desatualizadas. As estatísticas tornam-se desatualizadas depois que as operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou no modo de exibição indexado. O Otimizador de Consultas determina quando as estatísticas podem estar desatualizadas contando o número de modificações de dados desde a última atualização de estatísticas e comparando o número de modificações com um limite. O limite é baseado no número de linhas na tabela ou no modo de exibição indexado.

    O Otimizador de Consultas verifica se há estatísticas desatualizadas antes de compilar uma consulta e executar um plano de consulta em cache. O Otimizador de Consultas usa as colunas, tabelas e exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. O Otimizador de Consultas 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 de data up-to.

    A opção AUTO_UPDATE_STATISTICS aplica-se a estatísticas criadas para índices, colunas únicas em predicados de consulta e estatísticas criadas usando a instrução CREATE STATISTICS. Esta opção também se aplica a estatísticas filtradas.

    O padrão é ON. 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.

  • DESLIGADO

    Especifica que o Otimizador de Consultas não atualiza estatísticas quando elas são usadas por uma consulta. O Otimizador de Consultas também não atualiza estatísticas quando elas podem estar desatualizadas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

    Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

    Para obter mais informações, consulte a seção "Opções de estatísticas" em Statistics.

AUTO_UPDATE_STATISTICS_ASYNC { EM | DESLIGADO }

  • EM

    Especifica que as atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O Otimizador de Consultas não espera que as atualizações de estatísticas sejam concluídas antes de compilar consultas.

    Definir essa opção como ATIVADO não terá efeito, a menos que AUTO_UPDATE_STATISTICS esteja definido como ATIVADO.

    Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é definida como OFF e o Otimizador de Consultas atualiza as estatísticas de forma síncrona.

  • DESLIGADO

    Especifica que as atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O Otimizador de Consultas aguarda a conclusão das atualizações de estatísticas antes de compilar consultas.

    Definir esta opção como OFF não terá efeito, a menos que AUTO_UPDATE_STATISTICS esteja definido como ON.

Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_async_on no sys.databases exibição de catálogo.

Para obter mais informações que descrevem quando usar atualizações de estatísticas síncronas ou assíncronas, consulte a seção "Opções de estatísticas" em Statistics.

<automatic_tuning_option> ::=

Controla as opções automáticas para Ajuste automático. Você pode exibir as opções para as seguintes configurações no portal do Azure ou via T-SQL no modo de exibição sys.database_automatic_tuning_options.

AUTOMATIC_TUNING = { AUTO | HERDAR | PERSONALIZADO }

  • AUTOMÁTICO

    Definir o valor de ajuste automático como AUTO aplica os padrões de configuração do Azure para ajuste automático. No portal do Azure, isso reflete a opção "Herdar de: padrões do Azure".

  • HERDAR

    O uso do valor INHERIT herda a configuração padrão do servidor pai. No portal do Azure, isso reflete a opção "Herdar de: Servidor". Isso é especialmente útil 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 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.

  • À MEDIDA

    Usando o valor CUSTOM, você precisa configurar cada uma das opções de ajuste automático disponíveis em bancos de dados. No portal do Azure, isso reflete a opção "Herdar de: Não herdar".

CREATE_INDEX = { PADRÃO | EM | DESLIGADO }

Habilita ou desabilita o gerenciamento automático de índice CREATE_INDEX opção de Ajuste automático. Você pode exibir o status dessa opção no portal do Azure ou via T-SQL no modo de exibição sys.database_automatic_tuning_options.

  • INADIMPLÊNCIA

    Herda as configurações padrão do servidor. Nesse caso, as opções de habilitar ou desabilitar recursos individuais de ajuste automático são definidas no nível do servidor.

  • EM

    Quando habilitado, os índices ausentes são gerados automaticamente em um banco de dados. Após a criação do índice, verificam-se os ganhos para o desempenho da carga de trabalho. Quando esse índice criado não fornece mais benefícios para o desempenho da carga de trabalho, ele é revertido automaticamente. Os índices criados automaticamente são sinalizados como indexados gerados pelo sistema.

  • DESLIGADO

    Não gera automaticamente índices ausentes no banco de dados.

DROP_INDEX = { PADRÃO | EM | DESLIGADO }

Habilita ou desabilita o gerenciamento automático de índice DROP_INDEX opção de Ajuste automático. Você pode exibir o status dessa opção no portal do Azure ou via T-SQL no modo de exibição sys.database_automatic_tuning_options.

  • INADIMPLÊNCIA

    Herda as configurações padrão do servidor. Nesse caso, as opções de habilitar ou desabilitar recursos individuais de ajuste automático são definidas no nível do servidor.

  • EM

    Descarta automaticamente índices duplicados ou não mais úteis para a carga de trabalho de desempenho.

  • DESLIGADO

    Não descarta automaticamente índices ausentes no banco de dados.

FORCE_LAST_GOOD_PLAN = { PADRÃO | EM | DESLIGADO }

Ativa ou desativa a correção automática do plano FORCE_LAST_GOOD_PLAN opção de Ajuste automático. Você pode exibir o status dessa opção no portal do Azure ou via T-SQL no modo de exibição sys.database_automatic_tuning_options.

  • INADIMPLÊNCIA

    Herda as configurações padrão do servidor. Nesse caso, as opções de habilitar ou desabilitar recursos individuais de ajuste automático são definidas no nível do servidor. Este é 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.

  • EM

    O Mecanismo de Banco de Dados força automaticamente o último plano em boas condições 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 da consulta de Transact-SQL com o plano forçado. Se houver ganhos de desempenho, o Mecanismo de Banco de Dados continuará usando o último plano em boas condições. Se os ganhos de desempenho não forem detetados, 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 de Leitura-Gravação .

  • DESLIGADO

    O Mecanismo de Banco de Dados relata possíveis regressões de desempenho de consulta causadas por alterações no plano de consulta em sys.dm_db_tuning_recommendations exibição. No entanto, essas recomendações não são aplicadas automaticamente. Os usuários podem monitorar recomendações ativas e corrigir problemas identificados aplicando Transact-SQL scripts mostrados na exibição.

<change_tracking_option> ::=

Controla as opções de controle de alterações. Pode ativar o controlo de alterações, definir opções, alterar opções e desativar o controlo de alterações. Para obter exemplos, consulte a seção Exemplos mais adiante neste artigo.

  • EM

    Habilita o controle de alterações para o banco de dados. Ao ativar o controle de alterações, você também pode definir as opções AUTO CLEANUP e CHANGE RETENTION (ALTERAR RETENÇÃO).

    • AUTO_CLEANUP = { EM | DESLIGADO }

      • EM

        As informações de controle de alterações são removidas automaticamente após o período de retenção especificado.

      • DESLIGADO

        Os dados de controle de alterações não são removidos do banco de dados.

    • CHANGE_RETENTION = retention_period { DIAS | HORÁRIO | MINUTOS }

      Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados são removidos somente quando o valor AUTO_CLEANUP está ATIVADO.

      retention_period é um número 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 mínimo de retenção é de 1 minuto. O tipo de retenção padrão é DAYS.

  • DESLIGADO

    Desabilita o controle de alterações para o banco de dados. Desative o controle de alterações em todas as tabelas antes de desabilitar o controle de alterações no banco de dados.

<cursor_option> ::=

Controla as opções do cursor.

CURSOR_CLOSE_ON_COMMIT { EM | DESLIGADO }

  • EM

    Todos os cursores abertos quando você confirma ou reverte uma transação são fechados.

  • DESLIGADO

    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 de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para CURSOR_CLOSE_ON_COMMIT. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão CURSOR_CLOSE_ON_COMMIT como OFF 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 obter mais informações, consulte SET CURSOR_CLOSE_ON_COMMIT.

Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX. O cursor é implicitamente desalocado apenas na desconexão. Para obter mais informações, consulte DECLARE CURSOR.

<db_encryption_option> ::=

Controla o estado de criptografia do banco de dados.

ENCRIPTAÇÃO { ON | DESLIGADO }

Define o banco de dados como criptografado (ON) ou não criptografado (OFF). Para obter mais informações sobre criptografia de banco de dados, consulte Transparent data encryption (TDE)e Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance e 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 ficheiros herdam a propriedade encriptada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia do banco de dados falhará.

Você pode ver o estado de criptografia do banco de dados usando o modo de exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.

<db_update_option> ::=

Controla se as 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 definir 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, consulte Statistics.

  • READ_WRITE

    O banco de dados está disponível para operações de leitura e gravação.

Para alterar esse estado, você deve 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 do Banco de Dados SQL do Azure, SET { READ_ONLY | READ_WRITE } está desabilitado.

<db_user_access_option> ::=

Controla o acesso do usuário ao banco de dados.

  • RESTRICTED_USER

    Permite que apenas membros da função de banco de dados fixa db_owner e dbcreator e sysadmin funções de servidor fixas se conectem ao banco de dados, mas não limita seu número. Todas as conexões com o banco de dados são desconectadas no período especificado pela cláusula de rescisão da instrução ALTER DATABASE. Após a transição do banco de dados para o estado RESTRICTED_USER, as tentativas de conexão por usuários não qualificados são recusadas. No Banco de Dados SQL do Azure, deve ser executado de dentro do banco de dados do usuário. No banco de dados master, você pode encontrar uma mensagem de erro Msg 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 que têm as permissões apropriadas para se conectar ao banco de dados são permitidos. Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade 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 dados master, você pode encontrar uma mensagem de erro Msg 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 totalmente duradouras ou se as transações são totalmente duradouras ou se são duradouras e diferidas.

  • DEFICIENTES

    Todas as transações após SET DISABLED são totalmente duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou declaração de confirmação são ignoradas.

  • PERMITIDO

    Todas as transações após SET ALLOWED são totalmente duráveis ou duráveis atrasadas, dependendo da opção de durabilidade definida no bloco atômico ou na declaração de confirmação.

  • FORÇADO

    Todas as transações após SET FORCED são atrasadas duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou declaração de confirmação são ignoradas.

<PARAMETERIZATION_option> ::=

Controla a opção de parametrização.

PARAMETRIZAÇÃO { SIMPLES | FORÇADO }

  • SIMPLES

    As consultas são parametrizadas com base no comportamento padrão do banco de dados.

  • FORÇADO

    O SQL Server parametriza todas as consultas no banco de dados.

A configuração atual dessa opção pode ser determinada examinando a coluna is_parameterization_forced no sys.databases exibição de catálogo.

<query_store_options> ::=

  • EM | DESLIGADO | LIMPAR [ TODOS ]

    Controla se o Repositório de Consultas está habilitado nesse banco de dados e também controla a remoção do conteúdo do Repositório de Consultas.

    • EM

      Habilita o Repositório de Consultas. ON é o valor padrão.

    • DESLIGADO

      Desativa o Repositório de Consultas.

      Observação

      O Repositório de Consultas não pode ser desabilitado no Banco de Dados SQL do Azure, no banco de dados único 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..

    • LIMPAR

      Remova 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 informações de estatísticas de execução do plano de consulta e do tempo de execução. No modo READ_ONLY, as informações podem ser lidas no Repositório de Consultas, mas novas informações não são adicionadas. Se o espaço máximo alocado 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 é tipo bigint. O valor padrão é 30. Para a edição básica do Banco de dados SQL, o padrão é 7 dias.

DATA_FLUSH_INTERVAL_SECONDS

Determina a frequência com que os dados gravados no Repositório de Consultas são mantidos no disco. Para otimizar o desempenho, os dados coletados pelo Repositório de Consultas são gravados de forma assíncrona no disco. A frequência com que essa transferência assíncrona ocorre é configurada usando o argumento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS é 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 é tipo bigint.

Observação

No Banco de Dados SQL do Azure, o valor de MAX_STORAGE_SIZE_MB padrão difere por camada de serviço, da seguinte maneira: Premium, Business Critical e Hyperscale: 1.024 MB; Padrão e Uso Geral: 100 MB; Básico: 10 MB O valor máximo de MAX_STORAGE_SIZE_MB permitido é 10.240 MB.

Observação

MAX_STORAGE_SIZE_MB limite não é rigorosamente aplicado. 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 de diálogo Repositório de Consultas do Management Studio Intervalo de Liberação de Dados. O valor padrão do intervalo é 900 segundos (ou 15 minutos). Se o Repositório de Consultas tiver violado o limite de MAX_STORAGE_SIZE_MB entre as verificações de tamanho de armazenamento, ele passará para o modo somente leitura. Se SIZE_BASED_CLEANUP_MODE estiver habilitado, o mecanismo de limpeza para impor o limite de MAX_STORAGE_SIZE_MB também será acionado. Depois que o espaço suficiente tiver sido limpo, o modo de Repositório de Consultas alternará automaticamente de volta 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, provavelmente deve repensar e otimizar sua carga de trabalho para reutilizar planos de consulta (por exemplo, usando parametrização forçadaou ajustar as configurações do Repositório de Consultas. A partir do SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, você pode definir QUERY_CAPTURE_MODE como CUSTOM para obter controle adicional sobre a política de captura de consulta.

INTERVAL_LENGTH_MINUTES

Determina o intervalo de tempo no qual os dados de estatísticas de execução em tempo de execução são agregados ao Repositório de Consultas. Para otimizar o uso do espaço, as estatísticas de execução de tempo de execução no repositório de estatísticas de tempo de execução são agregadas em uma janela de tempo fixa. Essa janela de tempo fixa é configurada usando o argumento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES é tipo bigint. O valor padrão é 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | DESLIGADO }

Controla se a limpeza é ativada automaticamente quando a quantidade total de dados se aproxima do tamanho máximo.

  • DESLIGADO

    A limpeza baseada no tamanho não é ativada automaticamente.

  • AUTOMÁTICO

    A limpeza baseada em tamanho é ativada automaticamente quando o tamanho no disco atinge 90% de max_storage_size_mb. A limpeza baseada em tamanho remove primeiro as consultas mais antigas e mais baratas. Para aproximadamente a 80% de max_storage_size_mb. Este é o valor de configuração padrão.

SIZE_BASED_CLEANUP_MODE é tipo nvarchar.

QUERY_CAPTURE_MODE { TODOS | AUTO | PERSONALIZADO | NENHUM }

Designa o modo de captura de consulta atualmente ativo. Cada modo define políticas específicas de captura de consulta.

Observação

Cursores, consultas dentro de Procedimentos Armazenados e consultas compiladas nativamente são sempre capturadas quando o modo de captura de consulta é definido como ALL, AUTO ou CUSTOM.

  • TUDO

    Captura todas as consultas.

  • AUTOMÁTICO

    Capture consultas relevantes com base na contagem de execução e no consumo de recursos. Este é o valor de configuração padrão para o Banco de Dados SQL do Azure.

  • NENHUM

    Pare de capturar novas consultas. O Repositório de Consultas continua a coletar estatísticas de compilação e tempo de execução para consultas que já foram capturadas. Use essa configuração com cuidado, pois você pode perder a captura de consultas importantes.

  • À MEDIDA

    Permite o controlo sobre as opções QUERY_CAPTURE_POLICY.

QUERY_CAPTURE_MODE é tipo nvarchar.

MAX_PLANS_PER_QUERY

Define o número máximo de planos mantidos para cada consulta. MAX_PLANS_PER_QUERY é tipo int. O valor padrão é 200.

WAIT_STATS_CAPTURE_MODE { EM | DESLIGADO }

Controla se as estatísticas de espera são capturadas por consulta.

  • EM

    As informações de estatísticas de espera por consulta são capturadas. Esse valor é o valor de configuração padrão.

  • DESLIGADO

    As informações de estatísticas de espera por consulta não são capturadas.

<query_capture_policy_option_list> :: =

Controla as opções de política de captura do Repositório de Consultas. Exceto para STALE_CAPTURE_POLICY_THRESHOLD, essas opções definem as condições de OR que precisam acontecer para que as consultas sejam capturadas no valor definido de Limite de Política de Captura Estática.

STALE_CAPTURE_POLICY_THRESHOLD = inteiro { DIAS | HORÁRIO }

Define o período do intervalo de avaliação para determinar se uma consulta deve ser capturada. O padrão é 1 dia e pode ser definido de 1 hora a sete dias. número é tipo int.

EXECUTION_COUNT = inteiro

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 de Política de Captura Obsoleta padrão, uma consulta deve ser executada pelo menos 30 vezes em um dia para ser persistida no Repositório de Consultas. EXECUTION_COUNT é tipo int.

TOTAL_COMPILE_CPU_TIME_MS = inteiro

Define o tempo total de CPU de compilação decorrido usado por uma consulta durante o período de avaliação. O padrão é 1000, o que significa que, para o Limite de Política de Captura Obsoleta padrão, uma consulta deve ter um total de pelo menos um segundo de tempo de CPU gasto durante a compilação da consulta em um dia para ser persistida no Repositório de Consultas. TOTAL_COMPILE_CPU_TIME_MS é tipo int.

TOTAL_EXECUTION_CPU_TIME_MS = inteiro

Define o tempo total de execução da CPU usado por uma consulta durante o período de avaliação. O padrão é 100, o que significa que, para o Limite de Política de Captura Obsoleta padrão, uma consulta deve ter um total de pelo menos 100 ms de tempo de CPU gasto durante a execução em um dia para ser persistida no Repositório de Consultas. TOTAL_EXECUTION_CPU_TIME_MS é tipo int.

<snapshot_option> ::=

Determina o nível de isolamento da transação.

ALLOW_SNAPSHOT_ISOLATION { EM | DESLIGADO }

  • EM

    Habilita a opção Snapshot no nível do banco de dados. Quando habilitado, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usa o Snapshot Isolation. Quando essa opção estiver ativada, as transações poderão especificar o nível de isolamento da transação SNAPSHOT. Quando uma transação é executada no nível de isolamento SNAPSHOT, todas as instruções veem um instantâneo de dados como ele existe no início da transação. Se uma transação em execução no nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definida 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 estiver OFF.

  • DESLIGADO

    Desativa a opção Snapshot no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.

Quando você define 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 retornar rapidamente, use sys.dm_tran_ative_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 em que estava quando ALTER DATABASE foi iniciado. O sys.databases exibição de catálogo indica o estado das 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 é possível alterar o estado do ALLOW_SNAPSHOT_ISOLATION se o banco de dados estiver 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 examinando a coluna snapshot_isolation_state no sys.databases exibição de catálogo.

READ_COMMITTED_SNAPSHOT { EM | DESLIGADO }

  • EM

    Habilita Read-Committed opção Snapshot no nível do banco de dados. Quando habilitado, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usa o Snapshot Isolation. Quando essa opção estiver 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 veem um instantâneo dos dados como ele existe no início da instrução quando uma transação é executada no nível de isolamento READ COMMITTED .

  • DESLIGADO

    Desativa Read-Committed opção 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 ON ou OFF, não deve haver conexões ativas com o banco de dados, exceto para a conexão que executa o comando ALTER DATABASE. No entanto, 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 estiver 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, tempdbou msdb. Se você alterar a configuração para model, essa configuração se tornará o padrão para todos os novos bancos de dados criados, exceto para tempdb.

A configuração atual dessa opção pode ser determinada examinando a coluna is_read_committed_snapshot_on no sys.databases exibição de catálogo.

Advertência

Quando uma tabela é criada com DURABILITY = SCHEMA_ONLYe 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 definir READ_COMMITTED_SNAPSHOT ON ou OFF para um banco de dados deve ser executado no banco de dados master.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { EM | DESLIGADO }

  • EM

    Quando o nível de isolamento da transação é definido como qualquer nível de isolamento inferior ao SNAPSHOT, todas as operações de Transact-SQL interpretadas em tabelas com otimização de memória são executadas sob isolamento SNAPSHOT. Exemplos de níveis de isolamento inferiores ao snapshot são READ COMMITTED ou READ UNCOMMITTED. Essas operações são executadas se o nível de isolamento da transação é definido explicitamente no nível da sessão ou se o padrão é usado implicitamente.

  • DESLIGADO

    Não eleva o nível de isolamento de transação para operações interpretadas Transact-SQL em tabelas com otimização de memória.

Não é possível alterar o estado do MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se o banco de dados estiver OFFLINE.

O valor padrão é OFF.

A configuração atual dessa opção pode ser determinada examinando a coluna is_memory_optimized_elevate_to_snapshot_on no sys.databases exibição de catálogo.

<sql_option> ::=

Controla as opções de conformidade ANSI no nível do banco de dados.

ANSI_NULL_DEFAULT { EM | DESLIGADO }

Determina o valor padrão, NULL ou NOT NULL, de uma coluna ou tipo CLR definido pelo usuário para o qual a anulabilidade não está explicitamente definida nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem regras de restrição, seja qual for essa configuração.

  • EM

    O valor padrão é NULL.

  • DESLIGADO

    O valor padrão é NOT NULL.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão no nível do banco de dados para ANSI_NULL_DEFAULT. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_NULL_DEFAULT para 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 obter mais informações, consulte SET ANSI_NULL_DFLT_ON.

Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o padrão do banco de dados para NULL.

Você pode determinar o status dessa opção examinando a coluna is_ansi_null_default_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_NULLS { EM | DESLIGADO }

  • EM

    Todas as comparações com um valor nulo são avaliadas como UNKNOWN.

  • DESLIGADO

    Comparações de valores não-Unicode com um valor nulo avaliam como TRUE se ambos os valores forem NULL.

Importante

Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para ANSI_NULLS. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_NULLS para 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 obter mais informações, consulte SET ANSI_NULLS.

Observação

SET ANSI_NULLS também deve ser definido como ON quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_PADDING { EM | DESLIGADO }

  • EM

    As cadeias de caracteres são acolchoadas no mesmo comprimento antes da conversão. Também acolchoado no mesmo comprimento antes de inserir em um varchar ou tipo de dados nvarchar.

  • DESLIGADO

    Insere espaços em branco à direita em valores de caracteres em varchar ou colunas nvarchar. Também deixa zeros à direita em valores binários que são inseridos em colunas de varbinárias. Os valores não são acolchoados ao comprimento 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 estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Recomendamos que você sempre defina ANSI_PADDING como ON. ANSI_PADDING deve estar ATIVADO quando você cria ou manipula índices em colunas computadas ou exibições indexadas.

char(n) e binário(n) colunas que permitem nulos são acolchoadas ao comprimento da coluna quando ANSI_PADDING está definido como ON. Os espaços em branco e os zeros à direita são cortados quando ANSI_PADDING está DESATIVADO. char(n) e binário(n) colunas que não permitem nulos são sempre acolchoadas ao comprimento da coluna.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão no nível do banco de dados para ANSI_PADDING. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_PADDING para 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 obter mais informações, consulte SET ANSI_PADDING.

Você pode determinar o status dessa opção examinando a coluna is_ansi_padding_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_WARNINGS { EM | DESLIGADO }

  • EM

    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 aparecem em funções agregadas.

  • DESLIGADO

    Nenhum aviso é gerado e valores nulos são retornados quando condições como divisão por zero ocorrem.

Observação

SET ANSI_WARNINGS deve ser definido como ON quando você cria ou faz alterações em índices em colunas computadas ou exibições indexadas.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para ANSI_WARNINGS. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_WARNINGS para 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 obter mais informações, consulte SET ANSI_WARNINGS.

Você pode determinar o status dessa opção examinando a coluna is_ansi_warnings_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ARITHABORT { EM | DESLIGADO }

  • EM

    Uma consulta é encerrada quando ocorre um erro de estouro ou divisão por zero durante a execução da consulta.

  • DESLIGADO

    Uma mensagem de aviso é exibida quando ocorre um desses erros. A consulta, o lote ou a transação continua a ser processada como se nenhum erro ocorresse, mesmo que um aviso fosse exibido.

Observação

SET ARITHABORT deve ser definido como ON quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade 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 { EM | DESLIGADO }

  • EM

    O resultado de uma operação de concatenação é NULL quando qualquer operando é NULL. Por exemplo, concatenar a cadeia de caracteres "This is" e NULL causa o valor NULL, em vez do valor "This is".

  • DESLIGADO

    O valor nulo é tratado como uma cadeia de caracteres vazia.

Observação

CONCAT_NULL_YIELDS_NULL deve ser definido como ATIVADO quando você cria ou faz 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á ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para CONCAT_NULL_YIELDS_NULL. Por padrão, os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão CONCAT_NULL_YIELDS_NULL para ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL.

Você pode determinar o status dessa opção examinando a coluna is_concat_null_yields_null_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

NUMERIC_ROUNDABORT { EM | DESLIGADO }

  • EM

    Um erro é gerado quando ocorre perda de precisão em uma expressão.

  • DESLIGADO

    A perda de precisão não gera uma mensagem de erro e o resultado é arredondado para a precisão da coluna ou variável que armazena o resultado.

Importante

NUMERIC_ROUNDABORT deve ser definido como DESATIVADO quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

QUOTED_IDENTIFIER { EM | DESLIGADO }

  • EM

    Aspas duplas podem ser usadas para incluir identificadores delimitados.

    Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores cotados não precisam seguir as regras Transact-SQL para identificadores. Podem ser palavras-chave e incluir caracteres que não são permitidos nos identificadores de Transact-SQL. Se uma aspa dupla (") fizer parte do identificador, ela pode ser representada por duas aspas duplas ("").

  • DESLIGADO

    Os identificadores não podem estar entre aspas e devem seguir todas as regras Transact-SQL para identificadores. Os 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 IDENTIFICADOR COTADO é sempre armazenada como ATIVADA nos metadados da tabela. A opção é armazenada mesmo se estiver definida como OFF quando a tabela é criada.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para QUOTED_IDENTIFIER. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão QUOTED_IDENTIFIER para ON, por padrão. Os clientes executam a instrução quando você se conecta a uma instância do SQL Server. Para obter mais informações, consulte SET QUOTED_IDENTIFIER.

Você pode determinar o status dessa opção examinando a coluna is_quoted_identifier_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

RECURSIVE_TRIGGERS { EM | DESLIGADO }

  • EM

    É permitido o disparo recursivo de gatilhos AFTER.

  • DESLIGADO

    Você pode determinar o status dessa opção examinando a coluna is_recursive_triggers_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Observação

Somente a recursão direta é impedida quando RECURSIVE_TRIGGERS está definido como OFF. Para desabilitar a recursão indireta, você também deve definir a opção de servidor de gatilhos aninhados como 0.

Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX.

<target_recovery_time_option> ::=

Especifica a frequência dos 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 é 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. A Microsoft recomenda 1 minuto para a maioria dos sistemas.

TARGET_RECOVERY_TIME = target_recovery_time { SEGUNDOS | MINUTOS }

  • target_recovery_time

    Especifica o limite máximo no tempo para recuperar o banco de dados especificado no caso de uma falha. target_recovery_time é tipo int.

  • SEGUNDOS

    Indica que target_recovery_time é expresso como o número de segundos.

  • ATA

    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 do banco de dados.

COM <terminação> ::=

Especifica quando reverter transações incompletas quando o banco de dados é transferido de um estado para outro. Se a cláusula de rescisão for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Apenas uma cláusula de rescisão pode ser especificada, e ela segue as cláusulas SET.

Observação

Nem todas as opções de banco de dados usam a cláusula WITH <terminação>. Para obter mais informações, consulte a tabela em Opções de configuração da seção "Observações" deste artigo.

  • REVERSÃO APÓS inteiro [SEGUNDOS] | REVERSÃO IMEDIATA

    Especifica se a reversão deve ser revertida 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 que as transações sejam confirmadas ou revertidas por conta própria.

<temporal_history_retention> ::=

Definir opções

Para recuperar as configurações atuais para opções de banco de dados, use o sys.databases exibição de catálogo 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 WITH <terminação> 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 WITH <> de rescisão
<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

Um. 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 para RESTRICTED_USER modo para limitar o acesso. 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 ao 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 do 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.

Designação snapshot_isolation_state Descrição
[database_name] 1 EM

C. Ativar, modificar ou desativar o controlo de alterações

O exemplo a seguir habilita o controle de alterações para o banco de dados AdventureWorks2022 e define o período de retenção como 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 para o 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 do Repositório de Consultas.

--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 seus parâmetros.

--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 de política de captura personalizadas

O exemplo a seguir habilita o Repositório de Consultas e configura seus parâmetros.

--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
      )
    );

* Instância gerenciada SQL *  

 

Instância Gerenciada SQL do Azure

Os níveis de compatibilidade são opções SET, mas são descritos em nível de compatibilidade ALTER DATABASE.

Observação

Muitas opções de conjunto de banco de dados podem ser configuradas para a sessão atual usando instruções SET e geralmente são configuradas por aplicativos quando eles se conectam. As opções de conjunto no nível da sessão substituem os valores 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ção definida.

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.

ATUAL

CURRENT executa a ação no banco de dados atual. CURRENT não é suportado para todas as opções em todos os contextos. Se CURRENT falhar, forneça o nome do banco de dados.

<auto_option> ::=

Controla as opções automáticas.

AUTO_CREATE_STATISTICS { EM | DESLIGADO }

  • EM

    O Otimizador de Consultas cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar os planos de consulta e o desempenho da consulta. Essas estatísticas de coluna única são criadas quando o Otimizador de Consultas compila consultas. As estatísticas de coluna única são criadas apenas em colunas que ainda não são a primeira coluna de um objeto de estatísticas existente.

    O padrão é ON. Recomendamos que você use a configuração padrão para a maioria dos bancos de dados.

  • DESLIGADO

    O Otimizador de Consultas não cria estatísticas em colunas únicas em predicados de consulta quando está compilando consultas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

    Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

    Para obter mais informações, consulte a seção "Opções de estatísticas" em Statistics.

INCREMENTAL = LIGADO | DESLIGADO

Defina AUTO_CREATE_STATISTICS como ON e INCREMENTAL como ON. Essa configuração cria estatísticas criadas automaticamente como incrementais sempre que estatísticas incrementais são suportadas. O valor padrão é OFF. Para obter mais informações, consulte CREATE STATISTICS.

AUTO_SHRINK { EM | DESLIGADO }

  • EM

    Os arquivos de banco de dados são candidatos a 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 obter mais informações, consulte Reduzir um banco de dados.

    Tanto o arquivo de dados quanto os arquivos de log podem ser automaticamente reduzidos. AUTO_SHRINK reduz o tamanho do log de transações somente se você definir o banco de dados como modelo de recuperação SIMPLE ou se fizer backup do log. Quando definido como OFF, os arquivos de banco de dados não são automaticamente reduzidos 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 de 25% do arquivo contém espaço não utilizado. A opção faz com que o arquivo diminua para um de dois tamanhos. Encolhe para o que for maior:

    • O tamanho em que 25 por cento do ficheiro é espaço não utilizado
    • O tamanho do arquivo quando ele foi criado

    Não é possível reduzir um banco de dados somente leitura.

  • DESLIGADO

    Os arquivos de banco de dados não são automaticamente reduzidos durante as 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Observação

A opção AUTO_SHRINK não está disponível em um banco de dados contido.

AUTO_UPDATE_STATISTICS { EM | DESLIGADO }

  • EM

    Especifica que o Otimizador de Consultas atualiza as estatísticas quando elas são usadas por uma consulta e quando podem estar desatualizadas. As estatísticas tornam-se desatualizadas depois que as operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou no modo de exibição indexado. O Otimizador de Consultas determina quando as estatísticas podem estar desatualizadas contando o número de modificações de dados desde a última atualização de estatísticas e comparando o número de modificações com um limite. O limite é baseado no número de linhas na tabela ou no modo de exibição indexado.

    O Otimizador de Consultas verifica se há estatísticas desatualizadas antes de compilar uma consulta e executar um plano de consulta em cache. O Otimizador de Consultas usa as colunas, tabelas e exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. O Otimizador de Consultas 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 de data up-to.

    A opção AUTO_UPDATE_STATISTICS aplica-se a estatísticas criadas para índices, colunas únicas em predicados de consulta e estatísticas criadas usando a instrução CREATE STATISTICS. Esta opção também se aplica a estatísticas filtradas.

    O padrão é ON. 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.

  • DESLIGADO

    Especifica que o Otimizador de Consultas não atualiza estatísticas quando elas são usadas por uma consulta. O Otimizador de Consultas também não atualiza estatísticas quando elas podem estar desatualizadas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Para obter mais informações, consulte a seção "Usando as opções de estatísticas em todo o banco de dados" em Statistics.

AUTO_UPDATE_STATISTICS_ASYNC { EM | DESLIGADO }

  • EM

    Especifica que as atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O Otimizador de Consultas não espera que as atualizações de estatísticas sejam concluídas antes de compilar consultas.

    Definir essa opção como ATIVADO não terá efeito, a menos que AUTO_UPDATE_STATISTICS esteja definido como ATIVADO.

    Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é definida como OFF e o Otimizador de Consultas atualiza as estatísticas de forma síncrona.

  • DESLIGADO

    Especifica que as atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O Otimizador de Consultas aguarda a conclusão das atualizações de estatísticas antes de compilar consultas.

    Definir esta opção como OFF não terá efeito, a menos que AUTO_UPDATE_STATISTICS esteja definido como ON.

Você pode determinar o status dessa opção examinando a coluna is_auto_update_stats_async_on no sys.databases exibição de catálogo.

Para obter mais informações que descrevem quando usar atualizações de estatísticas síncronas ou assíncronas, consulte a seção "Usando as opções de estatísticas em todo o banco de dados" em Statistics.

<automatic_tuning_option> ::=

Controla as opções automáticas para Ajuste automático.

FORCE_LAST_GOOD_PLAN = { PADRÃO | EM | DESLIGADO }

Ativa ou desativa FORCE_LAST_GOOD_PLANopção ajuste automático.

  • INADIMPLÊNCIA

    O valor padrão para a Instância Gerenciada SQL do Azure é ON.

  • EM

    O Mecanismo de Banco de Dados força automaticamente o último plano em boas condições 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 da consulta de Transact-SQL com o plano forçado. Se houver ganhos de desempenho, o Mecanismo de Banco de Dados continuará usando o último plano em boas condições. Se os ganhos de desempenho não forem detetados, 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 de Leitura-Gravação . Este é o valor padrão.

  • DESLIGADO

    O Mecanismo de Banco de Dados relata possíveis regressões de desempenho de consulta causadas por alterações no plano de consulta em sys.dm_db_tuning_recommendations exibição. No entanto, essas recomendações não são aplicadas automaticamente. Os usuários podem monitorar recomendações ativas e corrigir problemas identificados aplicando Transact-SQL scripts mostrados na exibição.

<change_tracking_option> ::=

Controla as opções de controle de alterações. Pode ativar o controlo de alterações, definir opções, alterar opções e desativar o controlo de alterações. Para obter exemplos, consulte a seção Exemplos mais adiante neste artigo.

  • EM

    Habilita o controle de alterações para o banco de dados. Ao ativar o controle de alterações, você também pode definir as opções AUTO CLEANUP e CHANGE RETENTION (ALTERAR RETENÇÃO).

AUTO_CLEANUP = { EM | DESLIGADO }

  • EM

    As informações de controle de alterações são removidas automaticamente após o período de retenção especificado.

  • DESLIGADO

    Os dados de controle de alterações não são removidos do banco de dados.

CHANGE_RETENTION = retention_period { DIAS | HORÁRIO | MINUTOS }

Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados são removidos somente quando o valor AUTO_CLEANUP está ATIVADO.

retention_period é um número 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 mínimo de retenção é de 1 minuto. O tipo de retenção padrão é DAYS.

  • DESLIGADO

    Desabilita o controle de alterações para o banco de dados. Desative o controle de alterações em todas as tabelas antes de desabilitar o controle de alterações no banco de dados.

<cursor_option> ::=

Controla as opções do cursor.

CURSOR_CLOSE_ON_COMMIT { EM | DESLIGADO }

  • EM

    Todos os cursores abertos quando você confirma ou reverte uma transação são fechados.

  • DESLIGADO

    Os cursores permanecem abertos quando uma transação é confirmada; reverter uma transação fecha todos os cursores, exceto aqueles definidos como INSENSITIVE ou STATIC.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para CURSOR_CLOSE_ON_COMMIT. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão CURSOR_CLOSE_ON_COMMIT como OFF 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 obter mais informações, consulte SET CURSOR_CLOSE_ON_COMMIT.

Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade IsCloseCursorsOnCommitEnabled da função DATABASEPROPERTYEX. O cursor é implicitamente desalocado apenas na desconexão. Para obter mais informações, consulte DECLARE CURSOR.

<db_encryption_option> ::=

Controla o estado de criptografia do banco de dados.

ENCRIPTAÇÃO { ON | DESLIGADO }

Define o banco de dados como criptografado (ON) ou não criptografado (OFF). Para obter mais informações sobre criptografia de banco de dados, consulte Transparent data encryption (TDE)e Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance e 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 ficheiros herdam a propriedade encriptada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia do banco de dados falhará.

Você pode ver o estado de criptografia do banco de dados usando o modo de exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.

<delayed_durability_option> ::=

Controla se as transações são totalmente duradouras ou se as transações são totalmente duradouras ou se são duradouras e diferidas.

  • DEFICIENTES

    Todas as transações após SET DISABLED são totalmente duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou declaração de confirmação são ignoradas.

  • PERMITIDO

    Todas as transações após SET ALLOWED são totalmente duráveis ou duráveis atrasadas, dependendo da opção de durabilidade definida no bloco atômico ou na declaração de confirmação.

  • FORÇADO

    Todas as transações após SET FORCED são atrasadas duráveis. Todas as opções de durabilidade definidas em um bloco atômico ou declaração de confirmação são ignoradas.

<PARAMETERIZATION_option> ::=

Controla a opção de parametrização.

PARAMETRIZAÇÃO { SIMPLES | FORÇADO }

  • SIMPLES

    As consultas são parametrizadas com base no comportamento padrão do banco de dados.

  • FORÇADO

O SQL Server parametriza todas as consultas no banco de dados.

A configuração atual dessa opção pode ser determinada examinando a coluna is_parameterization_forced no sys.databases exibição de catálogo.

<query_store_options> ::=

  • EM | DESLIGADO | LIMPAR [ TODOS ]

    Controla se o Repositório de Consultas está habilitado nesse banco de dados e também controla a remoção do conteúdo do Repositório de Consultas.

    • EM

      Habilita o Repositório de Consultas.

    • DESLIGADO

      Desativa o Repositório de Consultas. Este é o valor padrão.

    • LIMPAR

      Remova 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 informações de estatísticas de execução do plano de consulta e do tempo de execução. No modo READ_ONLY, as informações podem ser lidas no Repositório de Consultas, mas novas informações não são adicionadas. Se o espaço máximo alocado 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 é tipo bigint. O valor padrão é 30. Para a edição básica do Banco de dados SQL, o padrão é 7 dias.

DATA_FLUSH_INTERVAL_SECONDS

Determina a frequência com que os dados gravados no Repositório de Consultas são mantidos no disco. Para otimizar o desempenho, os dados coletados pelo Repositório de Consultas são gravados de forma assíncrona no disco. A frequência com que essa transferência assíncrona ocorre é configurada usando o argumento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS é 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 é tipo bigint. O valor padrão é 100 MB.

MAX_STORAGE_SIZE_MB limite não é rigorosamente aplicado. 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 de diálogo Repositório de Consultas do Management Studio Intervalo de Liberação de Dados. O valor padrão do intervalo é 900 segundos (ou 15 minutos).

Se o Repositório de Consultas tiver violado o limite de MAX_STORAGE_SIZE_MB entre as verificações de tamanho de armazenamento, ele passará para o modo somente leitura. Se SIZE_BASED_CLEANUP_MODE estiver habilitado, o mecanismo de limpeza para impor o limite de MAX_STORAGE_SIZE_MB também será acionado.

Depois que o espaço suficiente tiver sido limpo, o modo de Repositório de Consultas alternará automaticamente de volta 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, provavelmente deve repensar e otimizar sua carga de trabalho para reutilizar planos de consulta (por exemplo, usando parametrização forçadaou ajustar as configurações do Repositório de Consultas.
  • A partir do SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, você pode definir QUERY_CAPTURE_MODE como CUSTOM para obter controle adicional sobre a política de captura de consulta.
  • MAX_STORAGE_SIZE_MB limite de configuração é de 10.240 MB na Instância Gerenciada SQL do Azure.

INTERVAL_LENGTH_MINUTES

Determina o intervalo de tempo no qual os dados de estatísticas de execução em tempo de execução são agregados ao Repositório de Consultas. Para otimizar o uso do espaço, as estatísticas de execução de tempo de execução no repositório de estatísticas de tempo de execução são agregadas em uma janela de tempo fixa. Essa janela de tempo fixa é configurada usando o argumento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES é tipo bigint. O valor padrão é 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | DESLIGADO }

Controla se a limpeza é ativada automaticamente quando a quantidade total de dados se aproxima do tamanho máximo.

  • DESLIGADO

    A limpeza baseada no tamanho não é ativada automaticamente.

  • AUTOMÁTICO

    A limpeza baseada em tamanho é ativada automaticamente quando o tamanho no disco atinge 90% de max_storage_size_mb. A limpeza baseada em tamanho remove primeiro as consultas mais antigas e mais baratas. Para aproximadamente a 80% de max_storage_size_mb. Este é o valor de configuração padrão.

SIZE_BASED_CLEANUP_MODE é tipo nvarchar.

QUERY_CAPTURE_MODE { TODOS | AUTO | PERSONALIZADO | NENHUM }

Designa o modo de captura de consulta atualmente ativo.

  • TUDO

    Todas as consultas são capturadas.

  • AUTOMÁTICO

    Capture consultas relevantes com base na contagem de execução e no consumo de recursos. Este é o valor de configuração padrão para o Banco de Dados SQL do Azure.

  • NENHUM

    Pare de capturar novas consultas. O Repositório de Consultas continua a coletar estatísticas de compilação e tempo de execução para consultas que já foram capturadas. Use essa configuração com cuidado, pois você pode perder a captura de consultas importantes.

QUERY_CAPTURE_MODE é tipo nvarchar.

MAX_PLANS_PER_QUERY

Um inteiro que representa o número máximo de planos mantidos para cada consulta. MAX_PLANS_PER_QUERY é tipo int. O valor padrão é 200.

WAIT_STATS_CAPTURE_MODE { EM | DESLIGADO }

Controla se as estatísticas de espera são capturadas por consulta.

  • EM

    As informações de estatísticas de espera por consulta são capturadas. Esse valor é o valor de configuração padrão.

  • DESLIGADO

    As informações de estatísticas de espera por consulta não são capturadas.

<query_capture_policy_option_list> :: =

Controla as opções de política de captura do Repositório de Consultas. Exceto para STALE_CAPTURE_POLICY_THRESHOLD, essas opções definem as condições de OR que precisam acontecer para que as consultas sejam capturadas no valor definido de Limite de Política de Captura Estática.

STALE_CAPTURE_POLICY_THRESHOLD = inteiro { DIAS | HORÁRIO }

Define o período do intervalo de avaliação para determinar se uma consulta deve ser capturada. O padrão é 1 dia e pode ser definido de 1 hora a sete dias.

EXECUTION_COUNT = inteiro

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 de Política de Captura Obsoleta padrão, uma consulta deve ser executada pelo menos 30 vezes em um dia para ser persistida no Repositório de Consultas. EXECUTION_COUNT é tipo int.

TOTAL_COMPILE_CPU_TIME_MS = inteiro

Define o tempo total de CPU de compilação decorrido usado por uma consulta durante o período de avaliação. O padrão é 1000, o que significa que, para o Limite de Política de Captura Obsoleta padrão, uma consulta deve ter um total de pelo menos um segundo de tempo de CPU gasto durante a compilação da consulta em um dia para ser persistida no Repositório de Consultas. TOTAL_COMPILE_CPU_TIME_MS é tipo int.

TOTAL_EXECUTION_CPU_TIME_MS = inteiro

Define o tempo total de execução da CPU usado por uma consulta durante o período de avaliação. O padrão é 100, o que significa que, para o Limite de Política de Captura Obsoleta padrão, uma consulta deve ter um total de pelo menos 100 ms de tempo de CPU gasto durante a execução em um dia para ser persistida no Repositório de Consultas. TOTAL_EXECUTION_CPU_TIME_MS é tipo int.

<snapshot_option> ::=

Determina o nível de isolamento da transação.

ALLOW_SNAPSHOT_ISOLATION { EM | DESLIGADO }

  • EM

    Habilita a opção Snapshot no nível do banco de dados. Quando habilitado, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usa o Snapshot Isolation. Depois que essa opção estiver ativada, as transações poderão especificar o nível de isolamento da transação SNAPSHOT. Quando uma transação é executada no nível de isolamento SNAPSHOT, todas as instruções veem um instantâneo de dados como ele existe no início da transação. Se uma transação em execução no nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definida 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 estiver OFF.

  • DESLIGADO

    Desativa a opção Snapshot no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.

Quando você define 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 retornar rapidamente, use sys.dm_tran_ative_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 em que estava quando ALTER DATABASE foi iniciado. O sys.databases exibição de catálogo indica o estado das 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 é possível alterar o estado do ALLOW_SNAPSHOT_ISOLATION se o banco de dados estiver OFFLINE.

Você pode alterar as configurações de ALLOW_SNAPSHOT_ISOLATION para os bancos de dados master, model, msdbe tempdb. A configuração é mantida sempre que a instância do Mecanismo de Banco de Dados é interrompida e reiniciada se você alterar 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 todos os novos bancos de dados criados, exceto para tempdb.

A opção é ON, por padrão, para os bancos de dados master e msdb.

A configuração atual dessa opção pode ser determinada examinando a coluna snapshot_isolation_state no sys.databases exibição de catálogo.

READ_COMMITTED_SNAPSHOT { EM | DESLIGADO }

  • EM

    Habilita a opção Read-Committed Snapshot no nível do banco de dados. Quando habilitado, as instruções DML começam a gerar versões de linha mesmo quando nenhuma transação usa o Snapshot Isolation. Depois que essa opção é habilitada, as transações que especificam o nível de isolamento READ COMMITTED usam controle de versão de linha em vez de bloqueio. Todas as instruções veem um instantâneo dos dados como ele existe no início da instrução quando uma transação é executada no nível de isolamento READ COMMITTED .

  • DESLIGADO

    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 conexões ativas com o banco de dados, exceto para a conexão que executa o comando ALTER DATABASE. No entanto, 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 estiver OFFLINE.

READ_COMMITTED_SNAPSHOT não pode ser ativado para os bancos de dados do sistema master, tempdbou msdb. Se você alterar a configuração do banco de dados do sistema model, essa configuração se tornará o padrão para todos os novos bancos de dados criados, exceto para tempdb.

A configuração atual dessa opção pode ser determinada examinando a coluna is_read_committed_snapshot_on no sys.databases exibição de catálogo.

Advertência

Quando uma tabela é criada com DURABILITY = SCHEMA_ONLY, e READ_COMMITTED_SNAPSHOT é subsequentemente alterada usando ALTER DATABASE, os dados na tabela são perdidos.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { EM | DESLIGADO }

  • EM

    Quando o nível de isolamento da transação é definido como qualquer nível de isolamento inferior ao SNAPSHOT, todas as operações de Transact-SQL interpretadas em tabelas com otimização de memória são executadas sob isolamento SNAPSHOT. Exemplos de níveis de isolamento inferiores ao snapshot são READ COMMITTED ou READ UNCOMMITTED. Essas operações são executadas se o nível de isolamento da transação é definido explicitamente no nível da sessão ou se o padrão é usado implicitamente.

  • DESLIGADO

    Não eleva o nível de isolamento de transação para operações interpretadas Transact-SQL em tabelas com otimização de memória.

Não é possível alterar o estado do MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se o banco de dados estiver OFFLINE.

O valor padrão é OFF.

A configuração atual dessa opção pode ser determinada examinando a coluna is_memory_optimized_elevate_to_snapshot_on no sys.databases exibição de catálogo.

<sql_option> ::=

Controla as opções de conformidade ANSI no nível do banco de dados.

ANSI_NULL_DEFAULT { EM | DESLIGADO }

Determina o valor padrão, NULL ou NOT NULL, de uma coluna ou tipo CLR definido pelo usuário para o qual a anulabilidade não está explicitamente definida nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem regras de restrição, seja qual for essa configuração.

  • EM

    O valor padrão é NULL.

  • DESLIGADO

    O valor padrão é NOT NULL.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão no nível do banco de dados para ANSI_NULL_DEFAULT. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_NULL_DEFAULT para 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 obter mais informações, consulte SET ANSI_NULL_DFLT_ON.

Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o padrão do banco de dados para NULL.

Você pode determinar o status dessa opção examinando a coluna is_ansi_null_default_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_NULLS { EM | DESLIGADO }

  • EM

    Todas as comparações com um valor nulo são avaliadas como UNKNOWN.

  • DESLIGADO

    Comparações de valores não-Unicode com um valor nulo avaliam como TRUE se ambos os valores forem NULL.

Importante

Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para ANSI_NULLS. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_NULLS para 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 obter mais informações, consulte SET ANSI_NULLS.

Importante

SET ANSI_NULLS também deve ser definido como ON quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_PADDING { EM | DESLIGADO }

  • EM

    As cadeias de caracteres são acolchoadas no mesmo comprimento antes da conversão. Também acolchoado no mesmo comprimento antes de inserir em um varchar ou tipo de dados nvarchar.

  • DESLIGADO

    Insere espaços em branco à direita em valores de caracteres em varchar ou colunas nvarchar. Também deixa zeros à direita em valores binários que são inseridos em colunas de varbinárias. Os valores não são acolchoados ao comprimento 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 estará ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Recomendamos que você sempre defina ANSI_PADDING como ON. ANSI_PADDING deve estar ATIVADO quando você cria ou manipula índices em colunas computadas ou exibições indexadas.

char(n) e binário(n) colunas que permitem nulos são acolchoadas ao comprimento da coluna quando ANSI_PADDING está definido como ON. Os espaços em branco e os zeros à direita são cortados quando ANSI_PADDING está DESATIVADO. char(n) e binário(n) colunas que não permitem nulos são sempre acolchoadas ao comprimento da coluna.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão no nível do banco de dados para ANSI_PADDING. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_PADDING para 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 obter mais informações, consulte SET ANSI_PADDING.

Você pode determinar o status dessa opção examinando a coluna is_ansi_padding_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ANSI_WARNINGS { EM | DESLIGADO }

  • EM

    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 aparecem em funções agregadas.

  • DESLIGADO

    Nenhum aviso é gerado e valores nulos são retornados quando condições como divisão por zero ocorrem.

Importante

SET ANSI_WARNINGS deve ser definido como ON quando você cria ou faz alterações em índices em colunas computadas ou exibições indexadas.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para ANSI_WARNINGS. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão ANSI_WARNINGS para 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 obter mais informações, consulte SET ANSI_WARNINGS.

Você pode determinar o status dessa opção examinando a coluna is_ansi_warnings_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

ARITHABORT { EM | DESLIGADO }

  • EM

    Uma consulta é encerrada quando ocorre um erro de estouro ou divisão por zero durante a execução da consulta.

  • DESLIGADO

    Uma mensagem de aviso é exibida quando ocorre um desses erros. A consulta, o lote ou a transação continua a ser processada como se nenhum erro ocorresse, mesmo que um aviso fosse exibido.

Importante

SET ARITHABORT deve ser definido como ON quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade 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 { EM | DESLIGADO }

  • EM

    O resultado de uma operação de concatenação é NULL quando qualquer operando é NULL. Por exemplo, concatenar a cadeia de caracteres "This is" e NULL causa o valor NULL, em vez do valor "This is".

  • DESLIGADO

    O valor nulo é tratado como uma cadeia de caracteres vazia.

Importante

CONCAT_NULL_YIELDS_NULL deve ser definido como ATIVADO quando você cria ou faz 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á ATIVADO e todos os aplicativos que definirem explicitamente a opção como DESATIVADO produzirão um erro. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para CONCAT_NULL_YIELDS_NULL. Por padrão, os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão CONCAT_NULL_YIELDS_NULL para ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL.

Você pode determinar o status dessa opção examinando a coluna is_concat_null_yields_null_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

NUMERIC_ROUNDABORT { EM | DESLIGADO }

  • EM

    Um erro é gerado quando ocorre perda de precisão em uma expressão.

  • DESLIGADO

    A perda de precisão não gera uma mensagem de erro e o resultado é arredondado para a precisão da coluna ou variável que armazena o resultado.

Importante

NUMERIC_ROUNDABORT deve ser definido como DESATIVADO quando você cria ou faz 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 no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

QUOTED_IDENTIFIER { EM | DESLIGADO }

  • EM

    Aspas duplas podem ser usadas para incluir identificadores delimitados.

    Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores cotados não precisam seguir as regras Transact-SQL para identificadores. Podem ser palavras-chave e incluir caracteres que não são permitidos nos identificadores de Transact-SQL. Se uma aspa dupla (") fizer parte do identificador, ela pode ser representada por duas aspas duplas ("").

  • DESLIGADO

    Os identificadores não podem estar entre aspas e devem seguir todas as regras Transact-SQL para identificadores. Os 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 IDENTIFICADOR COTADO é sempre armazenada como ATIVADA nos metadados da tabela. A opção é armazenada mesmo se estiver definida como OFF quando a tabela é criada.

As configurações de nível de conexão definidas usando a instrução SET substituem a configuração padrão do banco de dados para QUOTED_IDENTIFIER. Os clientes ODBC e OLE DB emitem uma configuração de instrução SET no nível de conexão QUOTED_IDENTIFIER para ON, por padrão. Os clientes executam a instrução quando você se conecta a uma instância do SQL Server. Para obter mais informações, consulte SET QUOTED_IDENTIFIER.

Você pode determinar o status dessa opção examinando a coluna is_quoted_identifier_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

RECURSIVE_TRIGGERS { EM | DESLIGADO }

  • EM

    É permitido o disparo recursivo de gatilhos AFTER.

  • DESLIGADO

    Você pode determinar o status dessa opção examinando a coluna is_recursive_triggers_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

    Observação

    Somente a recursão direta é impedida quando RECURSIVE_TRIGGERS está definido como OFF. Para desabilitar a recursão indireta, você também deve definir a opção de servidor de gatilhos aninhados como 0.

Você pode determinar o status dessa opção examinando a coluna no sys.databases exibição de catálogo ou a propriedade da função DATABASEPROPERTYEX.

<target_recovery_time_option> ::=

target_recovery_time_option não tem suporte na Instância Gerenciada SQL do Azure.

Especifica a frequência dos 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 é 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. A Microsoft recomenda 1 minuto para a maioria dos sistemas.

COM <terminação> ::=

Especifica quando reverter transações incompletas quando o banco de dados é transferido de um estado para outro. Se a cláusula de rescisão for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Apenas uma cláusula de rescisão pode ser especificada, e ela segue as cláusulas SET.

Observação

Nem todas as opções de banco de dados usam a cláusula WITH <terminação>. Para obter mais informações, consulte a tabela em Opções de configuração da seção "Observações" deste artigo.

  • REVERSÃO APÓS inteiro [SEGUNDOS] | REVERSÃO IMEDIATA

    Especifica se a reversão deve ser revertida 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 que as transações sejam confirmadas ou revertidas por conta própria.

<temporal_history_retention> ::=

Definir opções

Para recuperar as configurações atuais para opções de banco de dados, use o sys.databases exibição de catálogo 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

Um. 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.

Designação snapshot_isolation_state Descrição
[database_name] 1 EM

B. Ativar, modificar ou desativar o controlo de alterações

O exemplo a seguir habilita o controle de alterações para o banco de dados AdventureWorks2022 e define o período de retenção como 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 para o 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 do Repositório de Consultas.

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 seus parâmetros.

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 de política de captura personalizadas

O exemplo a seguir habilita o Repositório de Consultas e configura seus parâmetros.

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
      )
    );

de instância gerenciada SQL

* Sinapse do Azure
Análise *
 

 

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 as opções automáticas.

AUTO_CREATE_STATISTICS { EM | DESLIGADO }

  • EM

    O Otimizador de Consultas cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar os planos de consulta e o desempenho da consulta. Essas estatísticas de coluna única são criadas quando o Otimizador de Consultas compila consultas. As estatísticas de coluna única são criadas apenas em colunas que ainda não são a primeira coluna de um objeto de estatísticas existente.

    O padrão é ON. Recomendamos que você use a configuração padrão para a maioria dos bancos de dados.

  • DESLIGADO

    O Otimizador de Consultas não cria estatísticas em colunas únicas em predicados de consulta quando está compilando consultas. Definir essa opção como OFF pode causar planos de consulta abaixo do ideal e desempenho de consulta degradado.

Este comando deve ser executado enquanto estiver conectado ao banco de dados do usuário.

Você pode determinar o status dessa opção examinando a coluna is_auto_create_stats_on no sys.databases exibição de catálogo. Você também pode determinar o status examinando a propriedade da função DATABASEPROPERTYEX.

Para obter mais informações, consulte a seção "Usando as opções de estatísticas em todo o banco de dados" em Statistics.

<db_encryption_option> ::=

Controla o estado de criptografia do banco de dados.

ENCRIPTAÇÃO { ON | DESLIGADO }

  • EM

    Define o banco de dados a ser criptografado.

  • DESLIGADO

    Define o banco de dados para não ser criptografado.

Para obter mais informações sobre criptografia de banco de dados, consulte Transparent data encryption (TDE)e Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance e 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 ficheiros herdam a propriedade encriptada. Se algum grupo de arquivos no banco de dados estiver definido como SOMENTE LEITURA, a operação de criptografia do banco de dados falhará.

Você pode ver o estado de criptografia do banco de dados e o estado da verificação 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 { EM | DESLIGADO }

  • EM

    Habilita o Repositório de Consultas.

  • DESLIGADO

    Desativa o Repositório de Consultas. OFF é o valor padrão.

Observação

Para o Azure Synapse Analytics, você deve executar ALTER DATABASE SET QUERY_STORE do banco de dados do 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 opções de configuração adicionais não são suportadas.

<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 { EM | DESLIGADO }

  • EM

    Especifica que os conjuntos de resultados de consulta retornados desse banco de dados são armazenados em cache no banco de dados.

  • DESLIGADO

    Especifica que os conjuntos de resultados de consulta retornados desse banco de dados não são armazenados em cache no banco de dados.

Esse comando deve ser executado enquanto 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 persistido 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 falha de cache e valores negativos por motivos pelos quais o cache do conjunto de resultados não foi usado. Verifique 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 o cache do conjunto de resultados está desabilitado (em de nível de sessão ou de nível de banco de dados ) no momento da execução.

Importante

As operações para criar cache de conjunto de resultados e recuperar dados do cache acontecem no nó de controle de uma instância de data warehouse. Quando o cache do conjunto de resultados está ativado, a execução de consultas que retornam um grande conjunto de resultados (por exemplo, >1 milhão de linhas) pode causar alto uso da CPU no nó de controle e retardar a resposta geral da consulta na instância. Essas consultas são comumente usadas durante a exploração de dados ou operações de ETL. Para evitar estressar 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 cache de conjunto de resultados, consulte Diretrizes de ajuste de desempenho.

Permissões

Para definir a opção RESULT_SET_CACHING, um usuário precisa de login principal no nível de servidor (aquele criado pelo processo de provisionamento) ou ser membro da função de banco de dados dbmanager.

<snapshot_option> ::=

Aplica-se ao: Azure Synapse Analytics

Controla o nível de isolamento de transação de um banco de dados.

READ_COMMITTED_SNAPSHOT { EM | DESLIGADO }

  • EM

    Habilita a opção READ_COMMITTED_SNAPSHOT no nível do banco de dados.

  • DESLIGADO

    Desative a opção READ_COMMITTED_SNAPSHOT no nível do banco de dados.

Esse comando deve ser executado enquanto conectado ao banco de dados master. Ativar ou desativar READ_COMMITTED_SNAPSHOT para um banco de dados de usuários mata todas as conexões abertas com esse banco de dados. Você deve fazer essa alteração durante uma janela de manutenção do banco de dados ou aguardar até que não haja nenhuma conexão ativa com o banco de dados, exceto para a conexão que executa o comando ALTER DATABASE. O banco de dados não precisa estar no modo de usuário único. Não há suporte para alterar READ_COMMITTED_SNAPSHOT configuração no nível da sessão. Para verificar essa configuração para um banco de dados, verifique a coluna is_read_committed_snapshot_on no sys.databases.

Em um banco de dados com READ_COMMITTED_SNAPSHOT habilitado, as consultas podem ter um desempenho mais lento devido à verificação de versões se várias versões de dados estiverem presentes. Transações de longa duração também podem causar um aumento no tamanho do banco de dados. Esse problema ocorre 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 cache do conjunto de resultados para 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 de 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 conectar-se ao banco de dados master.

ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;

de instância gerenciada SQL

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 Delta Lake e desabilitar o comportamento V-Order em um depósito são os únicos usos para 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 Malha.

Exemplos

Um. Pausando a publicação de Delta Lake Logs

O comando T-SQL a seguir pausa a publicação do Delta Lake Log no contexto de depósito 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 espaço de trabalho, 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;