如果 tempdb 正在使用中,并且如果你尝试通过使用 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 命令对其进行收缩,则根据所使用的 SQL Server 版本,你可能会收到类似于以下内容的消息:
SQL Server 2005 和更高版本
服务器: 消息 8909,级别 16,状态 1,行 1 表错误: 对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 0 (类型未知),页 ID (6:8040) 在其页头中包含错误的页 ID。 页头中的 PageId 为 (0:0)。
SQL Server 2000
服务器: 消息 2501,级别 16,状态 1,行 1 找不到名为“1525580473”的表。 Check sysobjects.
服务器: 消息 8909,级别 16,状态 1,行 0 表损坏: Object ID 1, index ID 0, page ID %S_PGID. The PageId in the page header = %S_PGID.
注意
这些错误并不表示 tempdb 中存在任何实际损坏。 但是,请注意像错误 8909 这样的物理数据损坏错误可能有其他原因,其中的原因包括 I/O 子系统问题。 因此,如果该错误在收缩操作之外发生,则应进行进一步的调查。
在 SQL Server 2005 和更高版本中,虽然 8909 消息会返回到应用程序或正在执行收缩操作的用户,但是该收缩操作不会失败。
在 SQL Server 2000 和更低版本中,这些错误将导致收缩操作失败。 因此,若要收缩 tempdb 数据库,必须重启 SQL Server 以重新创建 tempdb。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




