13

ログファイルがないSQLServerManagementStudioに接続しようとしYafnet.mdfています。

以下のエラーが発生します。これをどのように行うことができるかについてのアイデアはありますか?

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo)

物理ファイル「C:\ sql_logs\YAFnet_log.ldf」を開くことができません。オペレーティングシステムエラー2:「2(システムは指定されたファイルを見つけることができません。)」。(Microsoft SQL Server、エラー:5120)

4

2 に答える 2

27

最初の状況では、次のようなことを試したようです(または、ダイアログを実行するときにGUIが準備するものは何でも)。

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;

ただし、この方法ではmdfファイルとファイルの両方が必要ldfです。そうしないと、次のようなエラーメッセージが表示されます。

メッセージ5120、レベル16、状態101、1行
目物理ファイル「C:\ sql_logs\YAFnet_log.ldf」を開くことができません。オペレーティングシステムエラー2:「2(システムは指定されたファイルを見つけることができません。)」。

これで、ファイルしかない場合でも続行する方法がありmdfます。SQL Serverから適切にデタッチされたファイルがあるとすると、次の構文を使用して、ログファイルなしでファイルmdfを添付できるはずです。mdf

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;

ただし、あなたの場合、ファイルはSQLServerから適切に切り離されていなかったようです。

メッセージ1813、レベル16、状態2、行1
物理ファイル名 "C:\ sql_logs\YAFnet_log.ldf"が正しくない可能性があります。データベースがシャットダウンされたときに開いているトランザクション/ユーザーがあったか、データベースにチェックポイントが発生しなかったか、データベースが読み取り専用であったため、ログを再構築できません。このエラーは、ハードウェアまたは環境の障害が原因でトランザクションログファイルが手動で削除または失われた場合に発生する可能性があります。

エラーメッセージに記載されている説明を含め、いくつかの考えられる説明があります。おそらく、無効なSANシャドウから取得されたか、読み取り専用でデタッチされたか、SQL Serverまたは基盤となるシステムがクラッシュした後、コピー/ダウンロード中に破損したか、または他に何を知っているかを知っています。

Yafのサポートまたはサービスプロバイダーのサポートに戻って、適切なバックアップが利用可能かどうか、またはそれができない場合はファイルの代替コピーがあるかどうかを確認する必要がありmdfます。また、私たちの誰もがYafが何であるかを実際に知らないか、あなたが話しているYafを確認する方法を持っていないことを覚えておいてください。

そうでなければ、この特定のmdfファイルは無効であり、したがってあなたをあまり遠くに連れて行かないので、あなたは運が悪いようです。

これが、デタッチ/アタッチおよび/またはO / SレベルのファイルコピーアプローチがSQLServerのバックアップ(または移行)の非常に有用な方法ではない理由です。適切なバックアップ/リカバリ計画が必要です。つまり、データ損失の許容範囲に適した適切なフル/差分/ログバックアップを作成する必要があります。mdfまた、データベースのデタッチは、ほとんどの場合、劣った考えです。デタッチ中またはデタッチ後にファイルに何かが発生した場合、データベースのコピーはゼロになります。

于 2013-01-09T23:29:11.520 に答える
-1

試すことができることがいくつかあります。初め:

CREATE DATABASE Yafnet ON (NAME = 'Yafnet', FILENAME='*filepath*\Yafnet.mdf') FOR ATTACH;

それがうまくいかない場合は、これを試してください:

SSMSを右クリックし、管理者として実行します。その後、再度取り付けてみてください。これで問題が解決するはずです。

于 2013-01-09T23:30:35.000 に答える