Opções ALTER DATABASE SET (Transact-SQL)
Este tópico contém a sintaxe ALTER DATABASE relacionada à configuração das opções de banco de dados. Para obter informações sobre outra sintaxe ALTER DATABASE, consulte ALTER DATABASE (Transact-SQL). O espelhamento e os níveis de compatibilidade de banco de dados são opções SET, mas são descritas em tópicos separados por causa de sua extensão. Para obter mais informações, consulte espelhamento de banco de dados ALTER DATABASE (Transact-SQL) e Nível de compatibilidade de ALTER DATABASE (Transact-SQL).
Sintaxe
ALTER DATABASE database_name
SET
{
{ <optionspec> [ ,...n ] [ WITH <termination> ] }
}
<optionspec>::=
{
<auto_option>
| <change_tracking_option>
| <cursor_option>
| <database_mirroring_option>
| <date_correlation_optimization_option>
| <db_encryption_option>
| <db_state_option>
| <db_update_option>
| <db_user_access_option>
| <external_access_option>
| <parameterization_option>
| <recovery_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
}
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { ON | OFF }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [ ,...n ] ) ]
| ( <change_tracking_option_list> [ ,...n ] )
}
}
<change_tracking_option> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<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 }
<db_state_option> ::=
{ ONLINE | OFFLINE | EMERGENCY }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<external_access_option> ::=
{
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
}
<parameterization_option> ::=
{
PARAMETERIZATION { SIMPLE | FORCED }
}
<recovery_option> ::=
{
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
| PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}
<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 }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 80 | 90 | 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
}
Argumentos
<auto_option>::=
Controla opções automáticas.
database_name
É o nome do banco de dados a ser modificado.AUTO_CLOSE { ON | OFF }
ON
O banco de dados é desligado corretamente e seus recursos são liberados depois da saída do último usuário.O banco de dados é reaberto automaticamente quando um usuário tenta usá-lo de novo. Por exemplo, quando é emitida uma instrução USE database_name. Se o banco de dados for desligado corretamente enquanto AUTO_CLOSE estiver definido como ON, ele 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.
OFF
O banco de dados permanecerá aberto depois da saída do último usuário.
A opção AUTO_CLOSE é útil para bancos de dados desktop porque permite que os arquivos de banco de dados sejam gerenciados como arquivos comuns. Eles podem ser movidos, copiados para fazer backups ou mesmo enviados por email a outros usuários.
Observação Em versões anteriores do SQL Server, AUTO_CLOSE é um processo síncrono que pode causar uma queda no desempenho quando o banco de dados é acessado por um aplicativo que estabelece e interrompe conexões repetidamente com o Mecanismo de Banco de Dados. Apresentado a partir do SQL Server 2005, o processo AUTO_CLOSE é assíncrono; abrir e fechar o banco de dados repetidamente não mais prejudica o desempenho.
O status dessa opção pode ser determinado examinando-se a coluna is_auto_close_on na exibição do catálogo sys.databases ou na propriedade IsAutoClose da função DATABASEPROPERTYEX.
Observação Quando AUTO_CLOSE for ON, algumas colunas na exibição do catálogo sys.databases e na função DATABASEPROPERTYEX retornarão NULL porque o banco de dados não está disponível para recuperar os dados. Para resolver isso, execute uma instrução USE para abrir o banco de dados.
Observação O espelhamento do banco de dados requer AUTO_CLOSE OFF.
Quando o banco de dados é definido como AUTOCLOSE = ON, uma operação que inicia o desligamento automático do banco de dados limpa o cache do plano da instância do SQL Server. A limpeza do cache de planos gera uma recompilação de todos os planos de execução subsequentes e pode causar uma queda repentina e temporária no desempenho de consultas. No SQL Server 2005 Service Pack 2, para cada armazenamento em cache eliminado do cache de planos, o log de erros do SQL Server contém a seguinte mensagem informativa: "O SQL Server encontrou %d ocorrência(s) de liberação de armazenamento em cache '% s' (parte do cache do esquema) devido à manutenção do banco de dados ou operações de reconfiguração". Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja limpo dentro desse intervalo.
AUTO_CREATE_STATISTICS { ON | OFF }
ON
O otimizador de consulta cria estatísticas em colunas únicas em predicados de consulta, conforme necessário, para melhorar planos e desempenho de consulta. Essas estatísticas de coluna única são criadas quando o otimizador de consulta compila consultas. As estatísticas de coluna única só são criadas em colunas que ainda não são a primeira de um objeto de estatísticas existente.O padrão é ON. Nós recomendamos que você use a configuração padrão para a maioria dos bancos de dados.
OFF
O otimizador de consulta não cria estatísticas em colunas únicas em predicados de consulta quando está compilando consultas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
O status dessa opção pode ser determinado examinando-se a coluna is_auto_create_stats_on na exibição do catálogo sys.databases ou na propriedade IsAutoCreateStatistics 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 Usando estatísticas para melhorar o desempenho de consultas.
AUTO_SHRINK {ON | OFF}
ON
Os arquivos de banco de dados são candidatos à redução periódica.Arquivos de dados e arquivos de log podem ser reduzidos automaticamente. AUTO_SHRINK reduzirá o tamanho do log de transações somente se o banco de dados estiver definido como modelo de recuperação SIMPLE ou se foi feito backup do log. Quando definido como OFF, os arquivos de banco de dados não são reduzidos automaticamente durante as verificações periódicas de espaço não utilizado.
A opção AUTO_SHRINK faz com que os arquivos sejam reduzidos quando mais que 25% do arquivo contém espaço não utilizado. O arquivo é reduzido de forma que 25% de seu tamanho seja de espaço não utilizado ou ele tenha o mesmo tamanho de quando foi criado, o que for maior.
Não é possível reduzir um banco de dados somente leitura.
OFF
Os arquivos de banco de dados não são reduzidos automaticamente durante as verificações periódicas de espaço não utilizado.
O status dessa opção pode ser determinado examinando-se a coluna is_auto_shrink_on na exibição do catálogo sys.databases ou na propriedade IsAutoShrink da função DATABASEPROPERTYEX.
AUTO_UPDATE_STATISTICS { ON | OFF }
ON
Especifica que o otimizador de consulta atualiza estatísticas quando elas são usadas por uma consulta e quando elas podem ficar desatualizadas. As estatísticas ficam desatualizadas depois que operações de inserção, atualização, exclusão ou mesclagem alteram a distribuição de dados na tabela ou na exibição indexada. O otimizador de consultas determina quando estatísticas podem estar desatualizadas, contando o número de modificações de dados desde a atualização das últimas estatísticas e comparando o número de modificações feitas em um limite. O limite se baseia no número de linhas na tabela ou na exibição indexada.O otimizador de consultas procura estatísticas desatualizadas antes de compilar uma consulta e antes de executar um plano de consulta armazenado em cache. Antes de compilar uma consulta, o otimizador usa as colunas, as tabelas e as exibições indexadas no predicado de consulta para determinar quais estatísticas podem estar desatualizadas. Antes de executar um plano de consulta armazenado em cache, o Mecanismo de Banco de Dados verifica se o plano de consulta faz referência a estatísticas atualizadas.
A opção AUTO_UPDATE_STATISTICS se aplica a estatísticas criadas para índices, colunas únicas em predicados de consulta, além de estatísticas criadas com a instrução CREATE STATISTICS. Essa opção também se aplica a estatísticas filtradas.
O padrão é ON. É recomendável usar a configuração padrão para a maioria dos bancos de dados.
Use a opção AUTO_UPDATE_STATISTICS_ASYNC para especificar se as estatísticas são atualizadas de forma síncrona ou assíncrona.
OFF
Especifica que o otimizador de consulta não atualiza estatísticas quando elas são usadas por uma consulta e quando elas podem ficar desatualizadas. Definir essa opção como OFF pode acarretar planos de consulta de qualidade inferior e menor desempenho de consulta.
O status dessa opção pode ser determinado examinando-se a coluna is_auto_update_stats_on na exibição do catálogo sys.databases ou na propriedade IsAutoUpdateStatistics 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 Usando estatísticas para melhorar o desempenho de consultas.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
ON
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são assíncronas. O otimizador de consulta não aguarda a conclusão das atualizações de estatísticas para compilar consultas.Definir essa opção como ON não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
Por padrão, a opção AUTO_UPDATE_STATISTICS_ASYNC é definida como OFF e o otimizador de consulta atualiza estatísticas de forma síncrona.
OFF
Especifica que atualizações de estatísticas para a opção AUTO_UPDATE_STATISTICS são síncronas. O otimizador de consulta aguarda a conclusão das atualizações de estatísticas para compilar consultas.Definir essa opção como OFF não tem nenhum efeito, a menos que AUTO_UPDATE_STATISTICS seja definida como ON.
O status dessa opção pode ser determinado examinando-se a coluna is_auto_update_stats_async_on na exibição do catálogo sys.databases.
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 Usando estatísticas para melhorar o desempenho de consultas.
<change_tracking_option>::=
Controla as opções de controle de alterações. É possível habilitar o controle de alterações, definir opções, alterar opções e desabilitar o controle de alterações. Para obter exemplos, consulte a seção Exemplos mais adiante neste tópico.
ON
Habilita o controle de alterações no banco de dados. Quando você habilita o controle de alterações, também pode definir as opções AUTO CLEANUP e CHANGE RETENTION.AUTO_CLEANUP = { ON | OFF }
ON
As informações de controle de alterações são removidas automaticamente depois do período de retenção especificado.OFF
Os dados de controle de alterações não são removidos do banco de dados.
CHANGE_RETENTION =retention_period { DAYS | HOURS | MINUTES }
Especifica o período mínimo para manter as informações de controle de alterações no banco de dados. Os dados serão removidos somente quando o valor AUTO_CLEANUP for ON.retention_period é um inteiro que especifica o componente numérico do período de retenção.
O período de retenção padrão é de 2 dias. O período de retenção mínimo é de 1 minuto.
OFF
Desabilita o controle de alterações no banco de dados. É necessário desabilitar o controle de alterações em todas as tabelas antes de poder desabilitá-lo no banco de dados.
<cursor_option>::=
Controla opções de cursor.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
ON
Qualquer cursor é aberto quando uma transação é confirmada ou quando uma transação revertida é fechada.OFF
Os cursores permanecem abertos quando uma transação é confirmada; uma transação revertida fechará todos os cursores, exceto aqueles definidos como INSENSITIVE ou STATIC.
As configurações no nível de conexão que são definidas com o uso da instrução SET substituem a configuração de banco de dados padrão por CURSOR_CLOSE_ON_COMMIT. Por padrão, clientes ODBC e OLE DB emitem uma configuração CURSOR_CLOSE_ON_COMMIT de instrução SET no nível de conexão como OFF para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL).
O status dessa opção pode ser determinado examinando-se a coluna is_cursor_close_on_commit_on na exibição do catálogo sys.databases ou na propriedade IsCloseCursorsOnCommitEnabled da função DATABASEPROPERTYEX.
CURSOR_DEFAULT { LOCAL | GLOBAL }
Controla se o escopo do cursor usa LOCAL ou GLOBAL.LOCAL
Quando LOCAL for especificado e um cursor não for definido como GLOBAL ao ser criado, o escopo do cursor será local para o lote, o procedimento armazenado ou o gatilho nos quais o cursor foi criado. O nome de cursor é válido somente dentro desse escopo. O cursor pode ser referenciado por meio de variáveis de cursor local no lote, no procedimento armazenado ou no gatilho, ou em um parâmetro OUTPUT do procedimento armazenado. O cursor será implicitamente desalocado quando o lote, o procedimento armazenado ou o gatilho for encerrado, a menos que seja repassado como um parâmetro OUTPUT. Se for repassado em um parâmetro OUTPUT, o cursor será desalocado quando a última variável que o referencia for desalocada ou sair do escopo.GLOBAL
Quando GLOBAL for especificado e um cursor não for definido como LOCAL ao ser criado, o escopo do cursor será global para a conexão. O nome do cursor pode ser referenciado em qualquer procedimento armazenado ou lote executado pela conexão.
O cursor é implicitamente desalocado somente na desconexão. Para obter mais informações, consulte DECLARE CURSOR (Transact-SQL).
O status dessa opção pode ser determinado examinando-se a coluna is_local_cursor_default na exibição do catálogo sys.databases ou na propriedade IsLocalCursorsDefault da função DATABASEPROPERTYEX.
<database_mirroring>
Para obter descrições de argumentos, consulte espelhamento de banco de dados ALTER DATABASE (Transact-SQL).
<date_correlation_optimization_option> ::=
Controla a opção date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
ON
O SQL Server mantém as estatísticas de correlação entre duas tabelas do banco de dados que estiverem vinculadas por uma restrição FOREIGN KEY e tiverem colunas datetime. Para obter mais informações, consulte Otimizando consultas que acessam colunas de data e hora correlacionadas.OFF
Estatísticas de correlação não são mantidas.
Para que seja possível definir DATE_CORRELATION_OPTIMIZATION como ON, não deve haver nenhuma conexão ativa com o banco de dados exceto aquela que está executando a instrução ALTER DATABASE. Depois disso, há suporte para várias conexões.
A configuração atual dessa opção pode ser determinada examinando-se a coluna is_date_correlation_on na exibição do catálogo sys.databases.
<db_encryption_option>::=
Controla o estado de criptografia do banco de dados.
- ENCRYPTION {ON | OFF}
Define o banco de dados a ser criptografado (ON) ou não criptografado (OFF). Para obter mais informações sobre a criptografia de banco de dados, consulte Compreendendo a TDE (Criptografia de Dados Transparente).
Quando a criptografia estiver habilitada no nível de banco de dados, todos os grupos de arquivos serão criptografados. Qualquer novo grupo de arquivos herdará a propriedade criptografada. Se algum grupo de arquivos do banco de dados for definido como READ ONLY, haverá falha na operação de criptografia de banco de dados.
É possível ver o estado da criptografia do banco de dados usando a exibição de gerenciamento dinâmico sys.dm_database_encryption_keys.
<db_state_option>::=
Controla o estado do banco de dados.
OFFLINE
O banco de dados é fechado, desligado corretamente e marcado como offline. Não é possível modificar o banco de dados enquanto ele estiver offline.ONLINE
O banco de dados está aberto e disponível para uso.EMERGENCY
O banco de dados está marcado como READ_ONLY, o log está desabilitado e o acesso é limitado aos membros da função de servidor fixa sysadmin. EMERGENCY é usado principalmente para 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 com o estado EMERGENCY. Isso permite habilitar o acesso somente leitura do administrador do sistema ao banco de dados. Apenas membros da função de servidor fixa sysadmin podem definir um banco de dados com o estado EMERGENCY.
Observação |
---|
Permissões: a permissão ALTER DATABASE para o banco de dados de assunto é necessária para alterar o estado de um database para offline ou emergência. A permissão ALTER ANY DATABASE em nível de servidor é necessária para mover um banco de dados de offline para online. |
O status dessa opção pode ser determinado examinando-se as colunas state e state_desc na exibição do catálogo sys.databases ou na propriedade Status da função DATABASEPROPERTYEX. Para obter mais informações, consulte Estados de banco de dados.
Um banco de dados marcado como RESTORING não pode ser definido como OFFLINE, ONLINE ou EMERGENCY. Um banco de dados pode estar no estado RESTORING 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 falhar devido a um arquivo de backup corrompido. Para obter mais informações, consulte Respondendo a erros de restauração dos SQL Server causado por backups danificados.
<db_update_option>::=
Controla se atualizações são permitidas no banco de dados.
READ_ONLY
Os usuários podem ler dados do banco de dados, mas não modificá-los.READ_WRITE
O banco de dados está disponível para operações de leitura e gravação.
Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados. Para obter mais informações, consulte a cláusula SINGLE_USER.
<db_user_access_option> ::=
Controla o acesso de usuários ao banco de dados.
SINGLE_USER
Especifica que somente um usuário por vez pode acessar o banco de dados. Se SINGLE_USER for especificado e houver outros usuários conectados 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 <termination>.O banco de dados permanecerá no modo SINGLE_USER, mesmo que o usuário que definiu a opção faça logoff. Nesse momento, um usuário diferente, mas somente um, poderá se conectar ao banco de dados.
Antes de definir o banco de dados como SINGLE_USER, verifique se a opção AUTO_UPDATE_STATISTICS_ASYNC está definida como OFF. Quando definida como ON, o thread em segundo plano usado para atualizar estatísticas estabelece uma conexão com o banco de dados e não é possível acessar o banco de dados em modo de usuário único. Para exibir o status dessa opção, consulte a coluna is_auto_update_stats_async_on na exibição do catálogo sys.databases. Se a opção estiver definida como ON, execute as tarefas a seguir:
Defina AUTO_UPDATE_STATISTICS_ASYNC como OFF.
Verifique se há estatísticas assíncronas ativas, examinando a exibição de gerenciamento dinâmico sys.dm_exec_background_job_queue.
Se houver tarefas ativas, permita que as tarefas sejam concluídas ou as encerre manualmente usando KILL STATS JOB.
RESTRICTED_USER
RESTRICTED_USER permite que somente membros da função de banco de dados fixa db_owner e das funções de servidor fixas dbcreator e sysadmin conectem-se 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 término da instrução ALTER DATABASE. Depois que o banco de dados fizer a transição para o estado RESTRICTED_USER, as tentativas de conexão realizadas por usuários não qualificados serão recusadas.MULTI_USER
Todos os usuários com permissões apropriadas para se conectar ao banco de dados são permitidos.
O status dessa opção pode ser determinado examinando-se a coluna user_access na exibição do catálogo sys.databases ou na propriedade UserAccess da função DATABASEPROPERTYEX.
<external_access_option>::=
Controla se o banco de dados pode ser acessado por recursos externos, como objetos de outro banco de dados.
DB_CHAINING { ON | OFF }
ON
O banco de dados pode ser a origem ou o destino de um encadeamento de propriedades de bancos de dados.OFF
O banco de dados não pode participar do encadeamento de propriedades de bancos de dados.
Importante A instância do SQL Server reconhecerá essa configuração quando a opção do servidor cross db ownership chaining for 0 (OFF). Quando cross db ownership chaining for 1 (ON), todos os bancos de dados de usuário poderão participar de cadeias de propriedades de bancos de dados, independentemente do valor dessa opção. Essa opção é definida por meio de sp_configure.
Para definir essa opção, a permissão CONTROL SERVER é necessária no banco de dados. A opção DB_CHAINING não pode ser definida nesses bancos de dados do sistema: master, model e tempdb.
O status dessa opção pode ser determinado examinando-se a coluna is_db_chaining_on na exibição do catálogo sys.databases.
Para obter mais informações, consulte Cadeias de propriedade.
TRUSTWORTHY { ON | OFF }
ON
Os módulos de banco de dados (por exemplo, funções definidas pelo usuário ou procedimentos armazenados) que usam um contexto de representação poderão acessar recursos fora do banco de dados.OFF
Os módulos de banco de dados em um contexto de representação não poderão acessar recursos fora do banco de dados.
TRUSTWORTHY será definido como OFF sempre que o banco de dados for anexado.
Por padrão, todos os bancos de dados do sistema, exceto o banco de dados msdb, têm TRUSTWORTHY definido como OFF. O valor não pode ser alterado para os bancos de dados model e tempdb. É recomendável nunca definir a opção TRUSTWORTHY como ON para o banco de dados master.
Para definir essa opção, a permissão CONTROL SERVER é necessária no banco de dados.
O status dessa opção pode ser determinado examinando-se a coluna is_trustworthy_on na exibição do catálogo sys.databases.
<parameterization_option> ::=
Controla a opção de parametrização.
PARAMETERIZATION { SIMPLE | FORCED }
SIMPLE
As consultas são parametrizadas com base no comportamento padrão do banco de dados. Para obter mais informações, consulte Parametrização simples.FORCED
O SQL Server parametriza todas as consultas feitas no banco de dados. Para obter mais informações, consulte Parametrização forçada.
A configuração atual dessa opção pode ser determinada examinando-se a coluna is_parameterization_forced na exibição do catálogo sys.databases.
<recovery_option> ::=
Controla as opções de recuperação de banco de dados e a verificação de erros de E/S do disco.
FULL
Fornece recuperação completa após falha de mídia usando backups do log de transações. Se um arquivo de dados for danificado, a recuperação de mídia poderá recuperar todas as transações confirmadas. Para obter mais informações, consulte Backup com o modelo de recuperação completa.BULK_LOGGED
Fornece uma recuperação após uma falha de mídia, combinando o melhor desempenho e a quantidade mínima de uso do espaço de log para determinadas operações em larga escala ou em massa. Para obter informações sobre quais operações são bulk-logged, consulte Operações que podem ser minimamente registradas em log. No modelo de recuperação BULK_LOGGED, o registro para essas operações é mínimo. Para obter mais informações, consulte Backup no modelo de recuperação com log de operações em massa.SIMPLE
Uma estratégia simples de backup que usa um espaço de log mínimo é fornecida. O espaço de log poderá ser reutilizado automaticamente quando não for mais necessário à recuperação de falha de servidor. Para obter mais informações, consulte Backup com o modelo de recuperação simples.Importante O modelo de recuperação simples é mais fácil de gerenciar do que os outros dois modelos, mas às custas de uma exposição maior à perda de dados se um arquivo de dados for danificado. Todas as alterações desde o backup mais recente do banco de dados ou diferencial serão perdidas e terão que ser reinseridas manualmente.
O modelo de recuperação padrão é determinado pelo modelo de recuperação do banco de dados model. Para obter mais informações sobre como selecionar o modelo de recuperação adequado, consulte Escolhendo o modelo de recuperação para um banco de dados.
O status dessa opção pode ser determinado examinando-se as colunas recovery_model e recovery_model_desc na exibição do catálogo sys.databases ou na propriedade Recovery da função DATABASEPROPERTYEX.
TORN_PAGE_DETECTION { ON | OFF }
ON
Páginas incompletas podem ser detectadas pelo Mecanismo de Banco de Dados.OFF
Páginas incompletas não podem ser detectadas pelo Mecanismo de Banco de Dados.
Importante A estrutura de sintaxe TORN_PAGE_DETECTION ON | OFF será removida em uma versão futura do SQL Server. Evite usar essa estrutura de sintaxe em novos trabalhos de desenvolvimento e planeje modificar os aplicativos que a utilizam atualmente. Use a opção PAGE_VERIFY em seu lugar.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
Descobre páginas de banco de dados danificadas por erros de caminho de E/S do disco. Os erros de caminho de E/S do disco podem ser a causa de problemas de corrupção de banco de dados e, em geral, são causados por quedas de energia ou falhas no disco que ocorrem no momento da gravação da página no disco.CHECKSUM
Calcula uma soma de verificação com base no conteúdo da página inteira e armazena o valor no cabeçalho da página quando ela é gravada em disco. Quando a página é lida pelo disco, a soma de verificação é recalculada e comparada ao valor da soma de verificação armazenado no cabeçalho da página. Se os valores não forem correspondentes, a mensagem de erro 824 (indicando uma falha na soma de verificação) será informada no log de erros do SQL Server e no log de eventos do Windows. Uma falha de soma de verificação indica um problema no caminho de E/S. Para determinar a causa principal, é necessária uma inspeção de hardware, drivers de firmware, BIOS, drivers de filtro (como software antivírus) e outros componentes de caminho de E/S.TORN_PAGE_DETECTION
Salva um padrão específico de 2 bits para cada setor de 512 bytes na página de banco de dados de 8 quilobytes (KB) e o armazena no cabeçalho da página do banco de dados quando a página é gravada em disco. Quando a página for lida pelo disco, os bits desativados armazenados no cabeçalho da página serão comparados às informações do setor da página real. Valores não correspondentes indicam que apenas parte da página foi gravada em disco. Nessa situação, a mensagem de erro 824 (indicando um erro de página interrompida) é informada no log de erros do SQL Server e no log de eventos do Windows. Páginas interrompidas serão detectadas normalmente através da recuperação de banco de dados se realmente for uma gravação incompleta de uma página. Entretanto, outras falhas de caminho de E/S podem gerar uma página interrompida a qualquer momento.NONE
A página do banco de dados não gerará um valor CHECKSUM ou TORN_PAGE_DETECTION. O SQL Server não verificará uma soma de verificação ou uma página interrompida durante uma leitura, mesmo que um valor CHECKSUM ou TORN_PAGE_DETECTION esteja presente no cabeçalho da página.
Considere os seguintes pontos importantes ao usar a opção PAGE_VERIFY:
No SQL Server 2005 e SQL Server 2008, o padrão é CHECKSUM. No SQL Server 2000, TORN_PAGE_DETECTION é o padrão.
Quando um usuário ou banco de dados do sistema é atualizado para o SQL Server 2005 ou SQL Server 2008, o valor PAGE_VERIFY (NONE ou TORN_PAGE_DETECTION) é retido. Recomendamos o uso de 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. No SQL Server 2008, o valor padrão do banco de dados tempdb é CHECKSUM para novas instalações novas do SQL Server. Ao atualizar uma instalação do SQL Server, o valor padrão permanece NONE. A opção pode ser modificada. É recomendável usar 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 que o banco de dados fique offline, seja bloqueado ou a simultaneidade de usuário seja impedida nele.
CHECKSUM é mutuamente exclusivo com TORN_PAGE_DETECTION. As duas opções não podem ser habilitadas ao mesmo tempo.
Quando a falha em uma página interrompida ou soma de verificação é detectada, é possível recuperá-las restaurando os dados ou recriando o índice se a falha estiver limitada apenas a páginas de índice. Se você encontrar uma falha de soma de verificação, para determinar o tipo de página de banco de dados ou páginas afetadas, execute DBCC CHECKDB. Para obter mais informações sobre opções de restauração, consulte Argumentos de RESTORE (Transact-SQL). Embora a restauração de dados resolva o problema de corrupção de dados, sua causa, por exemplo, falha do hardware de disco, deve ser diagnosticada e corrigida assim que possível para evitar a repetição dos erros.
O SQL Server repetirá mais quatro vezes qualquer leitura que falhe com uma soma de verificação, página interrompida ou outro erro de E/S. Se a leitura tiver êxito em qualquer uma das novas tentativas, uma mensagem será gravada no log de erros e o comando que disparou a leitura continuará. Se as novas tentativas falharem, o comando falhará com a mensagem de erro 824.
Para obter mais informações sobre soma de verificação, página interrompida, nova tentativa de leitura, mensagens de erro 823 e 824 e outros recursos de auditoria de E/S do SQL Server, consulte este site da Microsoft.
A configuração atual dessa opção pode ser determinada examinando-se a coluna page_verify_option na exibição do catálogo sys.databases ou na propriedade IsTornPageDetectionEnabled da função DATABASEPROPERTYEX.
<service_broker_option>::=
Controla as seguintes opções do Service Broker: habilita ou desabilita a entrega de mensagens, define um novo identificador do Service Broker ou define as prioridades de conversa como ON ou OFF. Para obter mais informações sobre a entrega de mensagens e identificadores do Service Broker, consulte Gerenciando identidades do Service Broker. Para obter mais informações sobre os níveis de prioridade de conversa, consulte Prioridades de conversação. Para obter exemplos que mostram como usar a opção HONOR_BROKER_PRIORITY, consulte Gerenciando as prioridades de conversação.
ENABLE_BROKER
Especifica que o Service Broker está habilitado para o banco de dados especificado. A entrega de mensagens está iniciada e o sinalizador is_broker_enabled está definido como verdadeiro na exibição do catálogo sys.databases. O banco de dados retém o identificador do Service Broker existente.Observação ENABLE_BROKER requer um bloqueio de banco de dados exclusivo. Se outras sessões bloquearam recursos no banco de dados, ENABLE_BROKER esperará até que as outras sessões liberem os 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 interrompa 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 está interrompida e o sinalizador is_broker_enabled está definido como falso na exibição do catálogo sys.databases. O banco de dados retém o identificador do Service Broker existente.NEW_BROKER
Especifica que o banco de dados deve receber um novo identificador do Broker. Como o banco de dados é considerado como um novo Service Broker, todas as conversas existentes nele são imediatamente removidas sem produzir mensagens de caixa de diálogo de término. Qualquer rota que referencia o antigo identificador do Service Broker deve ser recriada novamente com o novo identificador.ERROR_BROKER_CONVERSATIONS
Especifica que a entrega da mensagem Service Broker está habilitada. Isso preserva o identificador do Service Broker existente no banco de dados. O Service Broker encerra todas as conversas no banco de dados com um erro. Isso permite que os aplicativos executem a limpeza regular das conversas existentes.HONOR_BROKER_PRIORITY {ON | OFF}
ON
As operações de envio levam em conta os níveis de prioridade atribuídos às conversas. As mensagens de conversas com altos níveis de prioridade são enviadas antes das mensagens de conversas com baixos níveis de prioridade atribuídos.OFF
As operações de envio são executadas como se todas as conversas tivessem o nível de prioridade padrão.
As alterações na opção HONOR_BROKER_PRIORITY entram em vigor imediatamente para os novos diálogos ou diálogos que não tenham mensagens esperando para serem enviadas. As caixas de diálogo com mensagens esperando para serem enviadas quando ALTER DATABASE for executado não assumirão a nova configuração até que algumas das mensagens da caixa de diálogo sejam enviadas. O tempo necessário para que todas as caixas de diálogo comecem a usar a nova configuração pode variar consideravelmente.
A configuração atual dessa propriedade é relatada na coluna is_broker_priority_honored na exibição do catálogo sys.databases.
<snapshot_option>::=
Determina o nível de isolamento da transação.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
ON
Habilita a opção Instantâneo no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha até quando nenhuma transação usa Isolamento de Instantâneo. Depois que essa opção é habilidade, as transações podem especificar o nível de isolamento da transação SNAPSHOT. Ao executar uma transação no nível de isolamento SNAPSHOT, todas as instruções consultam um instantâneo de dados, se houver um no início da instrução. Se uma transação que executa o nível de isolamento SNAPSHOT acessar dados em vários bancos de dados, ALLOW_SNAPSHOT_ISOLATION deverá ser definido como ON em todos os bancos de dados ou cada instrução na transação deverá usar dicas de bloqueio em qualquer referência em uma cláusula FROM para uma tabela em um banco de dados em que ALLOW_SNAPSHOT_ISOLATION seja OFF.OFF
Desativa a opção Instantâneo no nível do banco de dados. As transações não podem especificar o nível de isolamento da transação SNAPSHOT.
Ao definir ALLOW_SNAPSHOT_ISOLATION para um novo estado (de ON para OFF, ou de OFF, para ON), ALTER DATABASE não retorna o controle para o chamador até que todas as transações existentes no banco de dados sejam confirmadas. Se o banco de dados já estiver no estado especificado na instrução ALTER DATABASE, o controle será retornado ao chamador imediatamente. Se a instrução ALTER DATABASE não for retornada rapidamente, use sys.dm_tran_active_snapshot_database_transactions para determinar se há transações de longa duração. Se a instrução ALTER DATABASE for cancelada, o banco de dados permanecerá no estado que estava quando ALTER DATABASE foi iniciada. A exibição do catálogo sys.databases indica o estado de transações de isolamento de instantâneo no banco de dados. Se snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, ALTER DATABASE ALLOW_SNAPSHOT_ISOLATION OFF fará uma pausa de seis segundos e tentará novamente executar a operação.
Não é possível alterar o estado de ALLOW_SNAPSHOT_ISOLATION se o banco de dados for OFFLINE.
Se você definir ALLOW_SNAPSHOT_ISOLATION em um banco de dados READ_ONLY, a configuração será retida se o banco de dados for definido mais tarde como READ_WRITE.
É possível alterar as configurações de ALLOW_SNAPSHOT_ISOLATION para os bancos de dados master, model, msdb e tempdb. Se você alterar a configuração para tempdb, ela será retida sempre que a instância do Mecanismo de Banco de Dados for interrompida e reiniciada. Ao alterar a configuração para modelo, essa configuração se tornará a padrão para qualquer novo banco de dados que for criado, 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-se a coluna snapshot_isolation_state na exibição do catálogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
ON
Habilita a opção Instantâneo de Leitura Confirmada no nível do banco de dados. Quando habilitada, as instruções DML começam a gerar versões de linha até quando nenhuma transação usa Isolamento de Instantâneo. Depois dessa opção ser habilitada, as transações que especificam o nível de isolamento de leitura confirmada usam controle de versão em vez de bloqueio. Quando uma transação é executada no nível de isolamento de leitura confirmada, todas as instruções consultam um instantâneo de dados, se houver um no início da instrução.OFF
Desativa a opção Instantâneo de Leitura Confirmada no nível do banco de dados. As transações que especificam o nível de isolamento READ COMMITTED usam bloqueio.
Para definir READ_COMMITTED_SNAPSHOT como ON ou OFF, não deve haver nenhuma conexão ativa com o banco de dados exceto para a que está executando o comando ALTER DATABASE. Entretanto, o banco de dados não precisa estar no modo de usuário único. Não é possível alterar o estado dessa opção quando o banco de dados for OFFLINE.
Se você definir READ_COMMITTED_SNAPSHOT em um banco de dados READ_ONLY, a configuração será retida quando o banco de dados for definido mais tarde como READ_WRITE.
READ_COMMITTED_SNAPSHOT não pode ser ativado para os bancos de dados do sistema master, tempdb ou msdb. Se você alterar a configuração para model, ela se tornará a padrão para qualquer novo banco de dados que for criado, exceto para tempdb.
A configuração atual dessa opção pode ser determinada examinando-se a coluna is_read_committed_snapshot_on na exibição do catálogo sys.databases.
<sql_option>::=
Controla as opções de conformidade ANSI no nível de banco de dados.
ANSI_NULL_DEFAULT { ON | OFF }
Determina o valor padrão, NULL ou NOT NULL, de uma coluna, um tipo de dados alias ou um tipo de dados CLR definido pelo usuário para os quais a nulidade não estiver definida explicitamente nas instruções CREATE TABLE ou ALTER TABLE. As colunas definidas com restrições seguem as regras de restrição apesar dessa configuração.ON
O valor padrão é NULL.OFF
O valor padrão é NOT NULL.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULL_DEFAULT. Por padrão, clientes ODBC e OLE DB emitem uma configuração ANSI_NULL_DEFAULT de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET ANSI_NULL_DFLT_ON (Transact-SQL).
Para compatibilidade ANSI, definir a opção de banco de dados ANSI_NULL_DEFAULT como ON altera o banco de dados padrão para NULL.
O status dessa opção pode ser determinado examinando-se a coluna is_ansi_null_default_on na exibição do catálogo sys.databases ou na propriedade IsAnsiNullDefault da função DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
ON
Todas as comparações com um valor nulo são avaliadas como UNKNOWN.OFF
As comparações de valores não UNICODE com um valor nulo são avaliadas como TRUE se ambos os valores forem NULL.
Importante Em uma versão futura do SQL Server, ANSI_NULLS sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_NULLS. Por padrão, clientes ODBC e OLE DB emitem uma configuração ANSI_NULLS de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET ANSI_NULLS (Transact-SQL).
SET ANSI_NULLS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
O status dessa opção pode ser determinado examinando-se a coluna is_ansi_nulls_on na exibição do catálogo sys.databases ou na propriedade IsAnsiNullsEnabled da função DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
ON
As cadeias de caracteres são preenchidas com o mesmo comprimento antes da conversão ou inserção em um tipo de dados varchar ou nvarchar.Espaços em branco à direita nos valores de caracteres inseridos nas colunas varchar ou nvarchar e os zeros à direita nos valores binários inseridos nas colunas varbinary não serão cortados. Os valores não são preenchidos com o tamanho da coluna.
OFF
Espaços em branco à direita para varchar ou nvarchar e zeros para varbinary são cortados.
Quando OFF é especificado, essa configuração afeta apenas a definição de novas colunas.
Importante Em uma versão futura do SQL Server, ANSI_PADDING sempre será ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As colunas char(n) e binary(n) que permitem nulos são preenchidas até o comprimento da coluna quando ANSI_PADDING está definido como ON, mas brancos e zeros à direita são cortados quando ANSI_PADDING está desativado. As colunas char(n) e binary(n) que não permitem nulos são sempre preenchidas até o comprimento da coluna.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_PADDING. Por padrão, clientes ODBC e OLE DB emitem uma configuração ANSI_PADDING de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET ANSI_PADDING (Transact-SQL).
Importante Recomenda-se que ANSI_PADDING sempre seja definido como ON. SET ANSI_PADDING deve ser ON ao criar ou manipular índices em colunas computadas ou exibições indexadas.
O status dessa opção pode ser determinado examinando-se a coluna is_ansi_padding_on na exibição do catálogo sys.databases ou na propriedade IsAnsiPaddingEnabled da função DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
ON
Erros ou avisos são emitidos quando condições como “divisão por zero” ou “valores nulos” aparecerem em funções de agregação.OFF
Nenhum aviso é emitido e os valores nulos são retornados quando condições como “dividir por zero” ocorrem.
SET ANSI_WARNINGS também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para ANSI_WARNINGS. Por padrão, clientes ODBC e OLE DB emitem uma configuração ANSI_WARNINGS de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET ANSI_WARNINGS (Transact-SQL).
O status dessa opção pode ser determinado examinando-se a coluna is_ansi_warnings_on na exibição do catálogo sys.databases ou na propriedade IsAnsiWarningsEnabled da função DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
ON
Uma consulta é encerrada quando ocorre um estouro ou erro de divisão por zero durante a execução da consulta.OFF
Uma mensagem de aviso é exibida quando um desses erros ocorre, mas a consulta, o lote ou a transação continuam a ser processados como se nenhum erro tivesse ocorrido.
SET ARITHABORT também deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
O status dessa opção pode ser determinado examinando-se a coluna is_arithabort_on na exibição do catálogo sys.databases ou na propriedade IsArithmeticAbortEnabled da função DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL { 80 | 90 | 100 }
Para obter mais informações, consulte Nível de compatibilidade de ALTER DATABASE (Transact-SQL).CONCAT_NULL_YIELDS_NULL { ON | OFF }
ON
O resultado de uma operação de concatenação será NULL quando qualquer operando for NULL. Por exemplo, concatenar a cadeia de caracteres "This is" e NULL gera o valor NULL, em vez do valor "This is".OFF
O valor nulo é tratado como uma cadeia de caracteres vazia.
CONCAT_NULL_YIELDS_NULL deve ser definido como ON ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
Importante Em uma versão futura do SQL Server, CONCAT_NULL_YIELDS_NULL sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF produzirão um erro. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
As configurações no nível de conexão que são definidas usando uma instrução SET substituem a configuração no nível de banco de dados padrão para CONCAT_NULL_YIELDS_NULL. Por padrão, clientes ODBC e OLE DB emitem uma configuração CONCAT_NULL_YIELDS_NULL de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).
O status dessa opção pode ser determinado examinando-se a coluna is_concat_null_yields_null_on na exibição do catálogo sys.databases ou na propriedade IsNullConcat da função DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
ON
As aspas duplas podem ser utilizadas para delimitar identificadores.Todas as cadeias de caracteres delimitadas por aspas duplas são interpretadas como identificadores de objeto. Os identificadores entre aspas não precisam seguir as regras Transact-SQL para identificadores. Eles podem ser palavras-chave e incluir caracteres geralmente não permitidos nos identificadores Transact-SQL. Se o sinal de aspas simples (') fizer parte da cadeia de caracteres literal, ele poderá ser representado por aspas duplas (").
OFF
Os identificadores não podem estar entre aspas e devem seguir todas as regras de identificadores Transact-SQL. Literais podem ser delimitados por aspas simples ou duplas.
O SQL Server também permite que os identificadores sejam delimitados por colchetes ([ ]). Os identificadores entre colchetes podem sempre ser usados, seja qual for a configuração de QUOTED_IDENTIFIER. Para obter mais informações, consulte Identificadores delimitados (Mecanismo de Banco de Dados).
Quando uma tabela é criada, a opção QUOTED IDENTIFIER sempre é armazenada como ON nos metadados da tabela, mesmo que a opção esteja definida como OFF quando a tabela é criada.
As configurações no nível de conexão que são definidas com o uso de uma instrução SET substituem a configuração no nível de banco de dados padrão para QUOTED_IDENTIFIER. Por padrão, clientes ODBC e OLE DB emitem uma configuração QUOTED_IDENTIFIER de instrução SET no nível de conexão como ON para a sessão ao se conectar a uma instância do SQL Server. Para obter mais informações, consulte SET QUOTED_IDENTIFIER (Transact-SQL).
O status dessa opção pode ser determinado examinando-se a coluna is_quoted_identifier_on na exibição do catálogo sys.databases ou na propriedade IsQuotedIdentifiersEnabled da função DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
ON
Um erro é gerado quando ocorre perda de precisão em uma expressão.OFF
As perdas de precisão não geram mensagens de erro e o resultado é arredondado de acordo com a precisão da coluna ou variável que armazena o resultado.
NUMERIC_ROUNDABORT deve ser definido como OFF ao criar ou fazer alterações em índices em colunas computadas ou exibições indexadas.
O status dessa opção pode ser determinado examinando-se a coluna is_numeric_roundabort_on na exibição do catálogo sys.databases ou na propriedade IsNumericRoundAbortEnabled da função DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
ON
O disparo recursivo de gatilhos AFTER é permitido.OFF
Apenas o disparo recursivo direto de gatilhos AFTER não é permitido. Para desabilitar também a recursão indireta de gatilhos AFTER, defina a opção do servidor de gatilhos aninhados como 0 usando sp_configure.
Observação Somente a recursão direta será evitada quando RECURSIVE_TRIGGERS está definido como OFF. Para desabilitar a recursão indireta, é necessário definir também a opção do servidor nested triggers como 0.
O status dessa opção pode ser determinado examinando-se a coluna is_recursive_triggers_on na exibição do catálogo sys.databases ou na propriedade IsRecursiveTriggersEnabled da função DATABASEPROPERTYEX.
WITH <termination>::=
Especifica quando reverter transações incompletas quando há transição do banco de dados de um estado para outro. Se a cláusula de término for omitida, a instrução ALTER DATABASE aguardará indefinidamente se houver algum bloqueio no banco de dados. Somente uma cláusula de término pode ser especificada e ela sucede as cláusulas SET.
Observação |
---|
Nem todas as opções de banco de dados usam a cláusula WITH <termination>. Para obter mais informações, consulte a tabela em "Opções de configuração" na seção Comentários. |
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Especifica se a reversão deve ser feita após o número de segundos especificado ou imediatamente.NO_WAIT
Especifica que, se a alteração de estado do banco de dados ou da opção solicitada não puder ser concluída imediatamente sem esperar que as transações sejam confirmadas ou revertidas por si mesmas, a solicitação falhará.
Comentários
Opções de configuração
Para recuperar as configurações atuais das opções de banco de dados, use a exibição do catálogo sys.databases ou DATABASEPROPERTYEX. Para obter uma lista de valores padrão atribuídos ao banco de dados quando ele é criado pela primeira vez, consulte Definindo opções do banco de dados.
Depois que você define uma opção de banco de dados, a modificação entra em vigor imediatamente.
Para alterar os valores padrão de qualquer uma das opções de banco de dados para todos os bancos de dados recém-criados, 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 <termination> 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 <termination> |
---|---|---|
<db_state_option> |
Sim |
Sim |
<db_user_access_option> |
Sim |
Sim |
<db_update_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 |
<database_mirroring_option> |
Não |
Não |
ALLOW_SNAPSHOT_ISOLATION |
Não |
Não |
READ_COMMITTED_SNAPSHOT |
Não |
Sim |
<service_broker_option> |
Sim |
Não |
DATE_CORRELATION_OPTIMIZATION |
Sim |
Sim |
<parameterization_option> |
Sim |
Sim |
<change_tracking_option> |
Sim |
Sim |
<db_encryption> |
Sim |
Não |
O plano de cache para a instância do SQL Server é limpo definindo-se uma das seguintes opções:
OFFLINE |
READ_WRITE |
ONLINE |
MODIFY FILEGROUP DEFAULT |
MODIFY_NAME |
MODIFY FILEGROUP READ_WRITE |
COLLATE |
MODIFY FILEGROUP READ_ONLY |
READ_ONLY |
|
A limpeza do cache do esquema gera uma recompilação de todos os planos de execução subsequentes e pode provocar uma queda repentina e temporária no desempenho da consulta. Para cada armazenamento em cache limpo no cache de plano, o log de erros do SQL Server contém a seguinte mensagem informativa: "SQL Server encontrou %d ocorrência(s) de liberação de armazenamento em cache '% s' (parte do cache de plano) devido a alguma manutenção de banco de dados ou a operações de reconfiguração". Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja liberado dentro desse intervalo de tempo.
Exemplos
A. Opções de configuração 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 AdventureWorks2008R2 .
USE master;
GO
ALTER DATABASE AdventureWorks2008R2
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
A. Configurando o banco de dados como READ_ONLY
Alterar o estado de um banco de dados ou grupo de arquivos para READ_ONLY ou READ_WRITE requer acesso exclusivo ao banco de dados. O exemplo a seguir define o banco de dados como o modo SINGLE_USER para obter acesso exclusivo. Em seguida, o exemplo define o estado do banco de dados AdventureWorks2008R2 como READ_ONLY e retorna o acesso ao banco de dados para todos os usuários.
Observação |
---|
Este exemplo usa a opção de término WITH ROLLBACK IMMEDIATE na primeira instrução ALTER DATABASE. Todas as transações incompletas serão revertidas e qualquer outra conexão com o banco de dados de exemplo AdventureWorks2008R2 será desconectada imediatamente. |
USE master;
GO
ALTER DATABASE AdventureWorks2008R2
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE AdventureWorks2008R2
SET READ_ONLY;
GO
ALTER DATABASE AdventureWorks2008R2
SET MULTI_USER;
GO
C. Habilitando 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 AdventureWorks2008R2.
USE AdventureWorks2008R2;
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'AdventureWorks2008R2';
GO
USE master;
GO
ALTER DATABASE AdventureWorks2008R2
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check again.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'AdventureWorks2008R2';
GO
O conjunto de resultados mostra que a estrutura de isolamento de instantâneo está habilitada.
name snapshot_isolation_state description
--------------- ------------------------ -----------
AdventureWorks2008R2 1 ON
D. Ativando, modificando e desabilitando o controle de alterações
O exemplo a seguir habilita o controle de alterações no banco de dados AdventureWorks2008R2 e define o período de retenção para 4 dias.
ALTER DATABASE AdventureWorks2008R2
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 AdventureWorks2008R2
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
O exemplo a seguir mostra como desabilitar o controle de alterações no banco de dados AdventureWorks2008R2.
ALTER DATABASE AdventureWorks2008R2
SET CHANGE_TRACKING = OFF;
Consulte também