我目前正在尝试在 SQL Server 2005 上编写一个作业脚本,该作业将自动执行 DBCC CHECKDB 过程。基本上,我使用游标遍历并在实例上的每个数据库上运行 DBCC CHECKDB。有时它可以运行,运行每个数据库并将错误记录在我为此目的设计的表中,有时它只运行几个数据库并停止。有谁知道发生了什么事?我已经包含了用于游标的代码。
DECLARE @DbName varchar(100)
DECLARE
GetDbName CURSOR
LOCAL
FORWARD_ONLY
OPTIMISTIC
FOR
SELECT
name
FROM
sys.databases
ORDER BY
name
OPEN GetDbName
FETCH NEXT FROM GetDbName
INTO @DbName
WHILE (@@fetch_status = 0)
BEGIN
print @DbName
INSERT INTO
TempLog
EXEC('DBCC CHECKDB ('+ @DbName +') WITH NO_INFOMSGS, TABLERESULTS')
FETCH NEXT FROM GetDbName
INTO @DbName
END
CLOSE GetDbName
DEALLOCATE GetDbName
最佳答案
sufficiently high (20+) severity 的错误-- 根据我的经验,这些最常见的损坏是无效的文本指针 -- 将以极端的偏见停止当前正在运行的任何 SQL 作业,忽略 try/catch 构造并终止连接。我建议将此任务移出到外部进程,为每个 DBCC CHECKDB
命令建立一个新连接,以便它可以在遇到高严重性错误时继续。
关于sql-server - 自动化 DBCC CHECKDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407758/