5

dbcc shrinkfile('mydatabase',113311)失败并出现以下错误

在 sys.database_files 中找不到数据库“mydatabase”的文件“mydatabase”。该文件不存在或已被删除

它随机失败一次。我有执行的夜间任务dbcc shrinkfile。大多数时候工作正常。逻辑文件名等没有问题......我的逻辑文件名是'mydatabase'。我已使用以下查询验证了我的逻辑名称。

DBCC FILEHEADER (mydatabase)

select * from mydatabase.dbo.sysfiles 

Select * from master..sysaltfiles

这真的很奇怪,因为我找不到任何根本原因。SQL 2008R2 SP2

4

3 回答 3

5

我在 sql server 2012 中遇到了同样的问题。快速修复您可以使用文件 ID 而不是逻辑名称来缩小文件。其次检查 master_files 和 database_files 中的逻辑名称是什么。我在 master_files 中与在 database_files 中的不同。因此,您只需运行 alter database 重新设置文件的逻辑名称,然后它就可以正常工作了。

于 2013-07-18T08:46:17.203 回答
1
dbcc shrinkfile('mydatabase',113311)

请注意,“mydatabase”应该是逻辑名称。

您可以从数据库属性窗口下的文件选项卡中找到逻辑名称。

在此处输入图像描述 笔记

  • 验证逻辑名称和数据库是否相同。否则它不会工作
  • 这里我用红色标记了。数据库名和Logicalname不同。
  • 所以考虑逻辑名称并执行 .Database->properites->File
于 2013-10-08T12:09:19.357 回答
0

我尝试了以上所有方法,但仍然有问题。数据库被称为 clientdatabase 和日志文件 clientdatabase_log。

我设法通过重命名日志文件的逻辑名称来解决它:

USE [clientdatabase];
ALTER DATABASE clientdatabase MODIFY FILE 
(NAME = clientdatabase_log, NEWNAME = clientdatabase_log_1);

运行脚本

USE [clientTdatawarehouse]
GO
DBCC SHRINKFILE (clientTDataWarehouse_log_1, 1024)
GO 

现在工作了。

我在这里写了一篇博客:

https://hybriddbablog.com/answer-to-could-not-locate-file-xxx_log-for-database-xxx-in-sys-database_files/

于 2017-03-26T21:10:06.690 回答