web-dev-qa-db-ja.com

SQL Serverデータベースが破損しています

残念ながら、システムのハードディスクが破損しています。データベースを復旧しました。ただし、SQL管理スタジオ2005に再度アタッチすることはできません。エラーは次のとおりです。

myfile.mdf is not a primary database file. (SQL server , error 5171)
3
Gilcox

エラーは、myfile.mdfはプライマリデータベースファイルではありません。

これは、元のデータベースにさらにファイルがあったことを意味します。ログ(* .ldf)とセカンダリファイルを含むallファイルを添付する必要があります。通常、これらは* .ndfという名前ですが、あなたの場合、プライマリと同様に* .mdfという名前が付けられていたようです。また、「リカバリ」中にファイルの名前を変更した可能性もあります。

ファイル名が正しく、本当に元のプライマリファイルであるにも関わらず、添付を拒否した場合、ファイルが破損していて、ファイル上のすべてのデータが失われている可能性があります。バックアップから復元するか、DBを再作成して、データを再入力する必要があります。

5
Remus Rusanu

バックアップから復元する必要があります([データベース]を右クリックして[データベースの復元]を選択することで実行できます)

4
WOPR

SQLデータベース管理者としてログインします。更新されたバックアップコピーからデータベースを復元します。

.LDFファイルが見つからない場合は、LDFファイルなしでデータベースをアタッチすることもできます。以下を実行します。

CREATE DATABASE TestDB ON
(FILENAME = ‘C:\Program Files\Microsoft SQL Server\..\MSSQL\DATA\TestDB.mdf’)
For ATTACH_REBUILD_LOG
GO

データベースが破損している場合は、DBCC CHECKDB修復を実行するとデータが失われます。

ALTER DATABASE AdventureWorks2008R2 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BEGIN TRANSACTION;
DBCC CHECKDB ('AdventureWorks2008R2', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE AdventureWorks2008R2 SET MULTI_USER;

注:Reapir_allow_data_lossは最小修復レベルです。つまり、このステートメントを実行すると、一部のデータが失われる場合があります。

参照1 および 参照2 を読むこともできます

0
Priyanka