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」は論理名である必要があることに注意してください。

論理名は、データベース プロパティ ウィンドウの [ファイル] タブから見つけることができます。

ここに画像の説明を入力 ノート

  • 論理名とデータベースが同じであることを確認します。それ以外の場合は機能しません
  • ここでは、データベース名と論理名が異なる赤でマークされています。
  • したがって、論理名を考慮して、.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 に答える