DBCC CHECKDB检查SQL Server数据库中的错误

时间:2013-07-18 11:25:56

标签: sql sql-server dbcc

是否可以在SQL Server 2005数据库中的特定表上运行:DBCC CHECKDB

我有以下语法:

DBCC CHECKDB 
[
    [ ( database_name | database_id | 0
        [ , NOINDEX 
        | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
    ) ]
    [ WITH 
        {
            [ ALL_ERRORMSGS ]
            [ , EXTENDED_LOGICAL_CHECKS ] 
            [ , NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , { PHYSICAL_ONLY | DATA_PURITY } ]
        }
    ]
]

但是不断收到错误的语法。我只是想运行它来查看它引发的错误?你能帮我写一下这个语法吗?我想删除所有修复选项。

3 个答案:

答案 0 :(得分:11)

名称适用的

DBCC CHECKDB用于检查数据库。

有一个用于检查特定表的DBCC CHECKTABLE命令。用法是:

DBCC CHECKTABLE ('YourTable');

答案 1 :(得分:0)

迟到了聚会,但是,哦,好了...请参阅MS DBCC CHECKTABLE

语法:
DBCC CHECKTABLE ( table_name | view_name [ , { NOINDEX | index_id } |, { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) [ WITH { [ ALL_ERRORMSGS ] [ , EXTENDED_LOGICAL_CHECKS ] [ , NO_INFOMSGS ] [ , TABLOCK ] [ , ESTIMATEONLY ] [ , { PHYSICAL_ONLY | DATA_PURITY } ] [ , MAXDOP = number_of_processors ] } ]

请小心使用任何REPAIR选项。请注意,ESTIMATEONLY参数只是影响零,而PHYSICAL_ONLY选项在大型表上的运行时间可能要短得多。

答案 2 :(得分:0)

正如我所说的here

有时,在连接到 SQL Server 时,您可能会发现 SQL 数据库 (db) 被标记为“SUSPECT”。

这可能是由于数据库的事务日志文件丢失或损坏、硬件故障、病毒攻击、SQL Server 突然关闭等多种原因造成的。查看 SQL Server 错误日志以了解 SQL Server 数据库背后的具体原因怀疑模式。

当 SQL 数据库进入可疑模式时,您无法访问该数据库,也无法执行任何事务,直到它重新联机。要解决此问题,请执行以下步骤:

1:将数据库状态更改为紧急模式。

ALTER DATABASE dbName SET EMERGENCY

2:接下来,执行数据库控制台命令 (DBCC) CHECKDB。如果它发现数据库有任何问题,它会推荐适当的修复选项,例如 REPAIR_REBUILDREPAIR_FASTREPAIR_ALLOW_DATA_LOSS

DBCC CHECKDB ('dbName')

3:现在运行以下 T-SQL 查询以回滚任何事务并将 SQL 数据库置于单用户模式。

ALTER DATABASE dbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE

4:使用修复选项重新运行 DBCC CHECKDB 以修复可疑数据库。为此,请使用以下 T-SQL 查询:

DBCC CHECKDB (dbName, REPAIR_ALLOW_DATA_LOSS)

5:如果发现脚本运行成功,将数据库从单用户模式恢复到多用户模式。运行以下命令来完成:

ALTER DATABASE dbName SET MULTI_USER

您可以找到更详细的信息here