文章編號: 301292 - 上次校閱: 2005年12月20日 - 版次: 5.3

在計算資料行上執行 DBCC 具有索引時的 SET 選項考量

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

徵狀

DBCC CHECKTABLE、 DBCC DBREINDEX 和 DBCC CHECKDB 可能因下列錯誤訊息如果資料庫包含計算資料行有一個索引的資料表:
DBCC 失敗,因為下列的 SET 選項具有不正確的設定值: 'QUOTED_IDENTIFIER ARITHABORT'。

其他相關資訊

這種行為是經過設計規劃的。

DBCC CHECKDB、 DBREINDEX 和 CHECKTABLE 時如果計算的資料行上的索引存在於資料庫或表格需要下列的 SET 選項:
  • ARITHABORT、 CONCAT_NULL_YIELDS_NULL、 QUOTED_IDENTIFIER、 ANSI_NULLS、 ANSI_PADDING 及 ANSI_WARNINGS 必須設定為 ON。
  • NUMERIC_ROUNDABORT 必須設定為 OFF。
錯誤訊息是較可能發生如果 CHECKDB 或 CHECKTABLE 被排定從 SQL Server 代理程式工作或在 [資料庫維護計劃的完整性檢查。這是因為預設 SQL Server 代理程式 」 不會設定 QUOTED_IDENTIFIER 或 ARITHABORT。排程 DBCC CHECKTABLE 或 CHECKDB 完整性檢查對資料庫必須建立 SQL Server 代理程式工作與 Transact-SQL 命令中,您必須加入下列範例中所需的 SET 選項。
SET ARITHABORT ON
SET QUOTED_IDENTIFIER ON
DBCC CHECKTABLE(mytable)
go
				
這裡是說明如何將整個資料庫上執行 DBCC DBREINDEX 的範例指令碼。
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
如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
902388? (http://support.microsoft.com/kb/902388/ ) 事件識別碼: 208 可能會記錄,及當您嘗試使用資料庫維護計劃精靈 」 在 SQL Server 2000 中建立維護計劃時,就會記錄 「 DBCC 失敗 」 錯誤訊息

這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbmt kbprb KB301292 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:301292? (http://support.microsoft.com/kb/301292/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。