sql-server - 自动化 DBCC CHECKDB

标签 sql-server database

我目前正在尝试在 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/

相关文章:

mysql - 如何编写有效的 "SELECT a FROM t WHERE b IN() ORDER BY a"查询?

php - MySql 查询以在 Chartjs 中显示数据

sql - 如何动态地透视每个月的数据?

c# - 在不使用 IUserType 查询数据库时如何防止 NHibernate SqlDateTime 溢出?

sql-server - SQL Server 2012错误: object reference not set to an instance of an object

SQL查询返回矩阵

c# - 在 SQL Server 中将标识列重置为零?

php - 我需要具有一组特定功能的本地站点搜索

python - Python 列表、集合或字典是否可以使用数据库无形地实现?

database - 数据库中两个表之间更灵活的关系?