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
答案 0 :(得分:3)
我在sql server 2012中遇到了同样的问题。快速修复你可以使用文件ID而不是逻辑名来缩小文件。其次,检查master_files和database_files中的逻辑名称。 master_files与database_files中的不同。因此,您只需运行alter database再次设置文件的逻辑名称,然后就可以了。
答案 1 :(得分:0)
dbcc shrinkfile('mydatabase',113311)
请注意,'mydatabase'应为逻辑名称。
您可以从数据库属性窗口下的文件选项卡中找到逻辑名称。
答案 2 :(得分: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
现在工作了。
我在这里写了博客: