首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动化DBCC CHECKDB

自动化DBCC CHECKDB
EN

Stack Overflow用户
提问于 2009-09-10 21:11:48
回答 2查看 2K关注 0票数 1

我目前正在尝试在SQL Server2005上编写一个作业脚本,该作业将自动执行DBCC CHECKDB进程。基本上,我使用游标在实例上的每个数据库上运行DBCC CHECKDB。有时它会工作,在每个数据库中运行,并在我为此设计的表中记录错误,有时它只在少数数据库中运行并停止。有人知道这是怎么回事吗?我已经包含了用于游标的代码。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-10 21:17:20

sufficiently high (20+) severity的错误--根据我的经验,这些通常是诸如无效文本指针之类的损坏--将以极端偏见停止当前正在运行的任何SQL作业,忽略try/catch构造并终止连接。我建议将此任务移到外部进程,并为每个DBCC CHECKDB命令建立新连接,以便它可以在遇到严重错误时继续执行。

票数 2
EN

Stack Overflow用户

发布于 2009-09-10 21:24:23

使用未记录的sp_MSforeachdb存储过程

代码语言:javascript
复制
exec sp_msforeachdb 'use ?; dbcc checkdb'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1407758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档