sql server 2000ログファイルの紛失、追加データベースの失敗の解決方法


/*
私は中国の万網の仮想ホストで9月に停止しました.当時はデータベースをバックアップしていませんでした.データベースはsqlserver 2000です.この2,3日、紆余曲折の後、万網は私にデータベースファイルを提供してくれた.ただし、ログファイルはありません.これにより、データベースを追加する際にいくつかの問題が発生しました.以下はネットで見つけた資料で、似たような問題に遭遇した皆さんと共有します.
*/
 
様々な理由で、mdfファイルだけをバックアップしてログファイルを入手できなかった場合、リカバリは面倒なことになります.
【同じデータベース・サーバの場合】mdfファイルが現在のデータベースで生成されている場合は、sp_を使用する可能性があります.attach_dbまたはsp_attach_single_file_dbはデータベースを復元できますが、次のようなプロンプト情報デバイスのアクティブ化エラーが発生します.物理ファイル名'C:Program FilesMicrosoft SQL ServerMSSQLdatatest_Log.LDF'が間違っている可能性があります.'C:Program FilesMicrosoft SQL ServerMSSQLDatatest_が作成されましたlog.LDF'の新しいログファイル.
【異なるデータベース・サーバの場合】データベース・ファイルが他のコンピュータからコピーされた場合、残念ながら、上記の方法は通用しないかもしれません.メッセージ1813、レベル16、ステータス2、行1が新しいデータベース'test'を開くことができませんでした.CREATE DATABASEが終了します.デバイスのアクティブ化エラー.物理ファイル名'd:test_log.LDF'が間違っている可能性があります.どうしようかな?焦らないで、回復方法を例に挙げて説明します.A.デフォルトでは、testなどのリカバリ用のデータベースを構築します.SQL Server Enterprise Managerで作成できます.B.データベースサーバを停止します.C.先ほど生成したデータベースのログファイルtest_log.ldf削除、復元するデータベースmdfファイルで先ほど生成したデータベースデータファイルtest_を上書きdata.mdf. D.データベースサーバを起動します.データベースtestのステータスが「疑い」であることがわかります.この場合、このデータベースに対して何の操作もできません.E.データベースを設定すると、システムテーブルを直接操作できます.この操作は、SQL Server Enterprise Managerの「ツール-」SQL Server構成プロパティで、「サーバー設定」ページで「システムディレクトリの直接変更を許可」を選択します.次の文を使用して実装することもできます.
-SQL
 
    use master 
    
go
sp_configure  'allow updates',1
go 
reconfigure  with override
go

F.testを緊急修復モードに設定
-SQL
 
    update sysdatabases  
    set status=-32768  
    where dbid=DB_ID( 
    'test') 
   

このとき、SQL Server Enterprise Managerでこのデータベースが「読み取り専用」「疑いなし」「オフライン」「非常事態モード」であることを確認すると、データベース内のテーブルが表示されますが、システムテーブルGのみが表示されます.次に、本格的なリカバリ操作を行い、データベース・ログ・ファイルを再構築します.
-SQL

     dbcc rebuild_log( 
    'test', 
    'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf') 
   

実行中に、サーバ:メッセージ5030、レベル16、ステータス1のプロンプトが表示された場合、行1はデータベースをロックして実行できません.DBCCの実行が完了しました.DBCCからエラーメッセージが出力された場合は、システム管理者に連絡してください.[brown]は、他のプログラムがこのデータベースを使用していることを示します.先ほどFステップでSQL Server Enterprise Managerを使用してtestライブラリのシステムテーブルを開いた場合は、SQL Server Enterprise Managerを終了すればよいです.正しく実行されたプロンプトは、警告:データベース'test'のログが再構築されました.トランザクションの一貫性が失われました.DBCC CHECKDBを実行して、物理的な整合性を確認してください.データベース・オプションをリセットする必要があり、余分なログ・ファイルを削除する必要がある場合があります.DBCCの実行が完了しました.DBCCからエラーメッセージが出力された場合は、システム管理者に連絡してください.SQL Server Enterprise Managerで開くと、データベースのステータスが「DBOのみ使用」になります.データベース内のユーザー・テーブルにアクセスできます.H.データベース整合性の検証(省略可能)
-SQL

     dbcc checkdb( 
    'test') 
   

一般的な実行結果は、CHECKDDBが0個の割当エラーと0個の整合性エラー(データベース'test'で)を発見したことです.DBCCの実行が完了しました.DBCCからエラーメッセージが出力された場合は、システム管理者に連絡してください.I.データベースを正常状態にする
-SQL

     sp_dboption  
    'test', 
    'dbo use only', 
    'false' 
   

エラーがなければ、おめでとうございます.リカバリ後のデータベースを正常に使用できます.J.最後のステップでは、ステップEで設定した「システムディレクトリの直接変更を許可する」リカバリを行います.普段からシステムテーブルを直接操作するのは危険なことだからです.もちろん、SQL Server Enterprise Managerでリカバリしたり、次の文で完了したりできます.
-SQL

     sp_configure  
    'allow updates',0 
    
go 
reconfigure  with override
go

ソース:http://blog.csdn.net/gzyes/article/details/6917840