6

私は、SQL 2000 の廃止された評価版 (2006 年以降) を搭載した古いサーバーと、その上に置かれていた 2 つのデータベースを持っています。

なんらかの理由で、LDF ログ ファイルが見つかりません。推定削除。

私はそのサーバーに存在していたデータベースの mdf ファイル (場合によっては ndf ファイルも) を持っており、私が座っている別の SQL 2000 ボックスでそれらを起動して実行しようとしています。

sp_attach_dbログファイルが見つからないことを訴え、データベースをアタッチしません。同じ名前のデータベースのログファイルを使用してだます試みは、惨めに失敗しました。sp_attach_single_file_dbどちらも機能しません。mdf ファイルは明らかにきれいに切り離されていません。

データベースを接続して読み取り可能にするにはどうすればよいですか?

4

2 に答える 2

6

SQL 2000 マシンで動作するこの回答を見つけました。

クリーンにデタッチされていない MDF ファイルを使用してデータベースをアタッチする方法。

ステップ 1:新しいサーバー上の古いデータベースと同じファイルを使用する、同じ名前の新しいデータベースを作成します。

ステップ 2: SQL サーバーを停止し、作成したばかりの新しいファイルの上に mdf ファイル (およびすべての ndf ファイル) を移動します。ログ ファイルを削除します。

ステップ 3: SQL を開始し、これを実行して DB を緊急モードにします。

sp_configure 'allow updates', 1
go
reconfigure with override
GO
update sysdatabases set status = 32768 where name = 'TestDB'
go
sp_configure 'allow updates', 0
go
reconfigure with override
GO

ステップ 4: SQL サーバーを再起動し、DB が正常に緊急モードになっていることを確認します。

ステップ 5:この文書化されていない dbcc オプションを実行して、ログ ファイルを (正しい場所に) 再構築します。

DBCC REBUILD_LOG(TestDB,'D:\SQL_Log\TestDB_Log.LDF')

ステップ 6:ステータスのリセットが必要になる場合があります。そうしなくても、そうしても害はありません。

exec sp_resetstatus TestDB

ステップ 7: SQL を停止して開始し、新しく復元されたデータベースを確認します。

于 2008-09-24T11:38:28.067 に答える
1

Enterprise Manager でサーバーを右クリックし、[データベースのアタッチ] を選択します。MDF ファイルを選択し、[OK] をクリックします。次に、新しいログ ファイルを作成するかどうかを尋ねられます。イエスと言う。

于 2008-09-24T11:39:09.560 に答える