Artigo: 301292 - Última revisão: terça-feira, 20 de Dezembro de 2005 - Revisão: 5.3

SET OPTION considerações com DBCC índices em colunas calculadas

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sintomas

DBCC CHECKTABLE DBCC DBREINDEX e DBCC CHECKDB poderão falhar com a seguinte mensagem de erro se a base de dados contiver uma tabela tem um índice numa coluna calculada:
DBCC falhou porque as seguintes opções SET têm definições incorrectas: 'QUOTED_IDENTIFIER, ARITHABORT'.

Mais Informação

Este comportamento ocorre por predefinição.

DBCC CHECKDB, DBREINDEX e CHECKTABLE requerem as seguintes opções de SET se existir um índice numa coluna calculada na base de dados ou tabela:
  • ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING e ANSI_WARNINGS têm de estar definidas como ON.
  • NUMERIC_ROUNDABORT tem de ser definida como desactivada.
A mensagem de erro é mais provável se CHECKDB de CHECKTABLE está a ser agendado a partir de uma tarefa de SQL Server Agent ou de uma verificação da integridade de um plano de manutenção da base de dados. Isto acontece porque por predefinição o SQL Server Agent não define QUOTED_IDENTIFIER ou ARITHABORT. Para agendar uma DBCC CHECKTABLE ou CHECKDB integridade Verifique na base de dados, tem de criar uma tarefa de serviço do SQL Server e no comando Transact-SQL tem de adicionar o opções SET necessários como no exemplo seguinte.
SET ARITHABORT ON
SET QUOTED_IDENTIFIER ON
DBCC CHECKTABLE(mytable)
go
				
aqui está um script de exemplo que descrevem como executar DBCC DBREINDEX no toda a base de dados.
SET ARITHABORT ON 
SET QUOTED_IDENTIFIER ON 
 
use MyDatabase  -- CHANGE THE DATABASE NAME
go 
declare @tabname sysname 
declare @dbstring varchar(300) 
declare @exec_string varchar(300) 
 
declare tabDBCC cursor for select table_name from information_schema.tables where table_type = 'base table' 
 
open tabDBCC 
fetch next from tabDBCC into @tabname 
 
select @dbstring = DB_NAME() 
print 'Starting DBCC DBREINDEX for database ' + upper(@dbstring) 
 
while (@@fetch_status = 0) 
  begin 
    print 'Reindexing table ' + upper(@tabname) 
    select @exec_string = 'dbcc dbreindex ([' + @tabname + '])' 
    exec(@exec_string) 
    fetch next from tabDBCC into @tabname 
  end 
close tabDBCC 
deallocate tabDBCC 
 
print 'Finished DBCC DBREINDEX for database ' + upper(@dbstring) go
Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
902388  (http://support.microsoft.com/kb/902388/ ) ID de evento: 208 poderão ser registados e é registada uma mensagem de erro "DBCC falhou" quando tenta utilizar o Assistente de manutenção da base de dados do planeamento para criar um plano de manutenção no SQL Server 2000

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbprb KB301292 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 301292  (http://support.microsoft.com/kb/301292/en-us/ )