web-dev-qa-db-ja.com

テーブル破損エラー

SQL Serverデータベースに問題があります。今日私はそれを開いて、エラーを見ました– SQL Serverテーブル破損エラー。

このエラーの理由はわかりません。 SQL Server Management Studioを適用しましたが、データベースを完全に復元できませんでした。

誰かがSQL Serverデータベースを修復する方法を知っていますか?

3
Raymond Butler

データベースが開いていて、単一のテーブルを表示できない、またはデータベースをまったく閲覧できないのでしょうか。サーバー上の他のデータベースが影響を受けますか、それとも1つだけですか?現在のデータベースのステータスは何ですか-オフライン、疑わしい、または他の何か?それぞれが問題を修正または修復するための異なる手順を意味する場合があります。

また、バックアップが手元にある場合は、この問題の原因となった破損を修復できない場合に備えて、近くに保管しておくことをお勧めします。

データベースを開くことができる場合、開始するには、DBCCでデータベースをスキャンし、明らかなものが表示されるかどうかを確認します。

DBCC CHECKDB ('YourDatabase') WITH NO_INFOMSGS

そこから、表示されるエラーメッセージや警告に対処します。特定の問題を検索できるように十分な詳細情報を提供する必要があります(または、質問を更新して、詳細を含め、直接支援できるようにします)。

SqlMagには、破損、その内容、およびそれに対処する方法に関する素晴らしいシリーズがあり、ここから始めます。

http://sqlmag.com/blog/sql-server-database-corruption-part-i-what-c​​orruption

それらを修正するための提案を見たい場合は、セクション9に進んでください。ただし、アクションを実行する前に、何を扱っているかを理解してください。

3
SqlRyan

手順を実行する前に、DBCC CHECKDBオプション DBCC CHECKDBの使用と乱用 によるRichard Fryar。 (私はそこで宣伝されている製品とは関係ありません)。

  • テーブルを修復するには、データベースをシングルユーザーモードに変更します(マルチユーザーモードの場合)。

    ALTER DATABASE [databasename] SET SINGLE_USER WITH NO_WAIT
    
  • テーブルを修復するには:

    use databasename;
    dbcc checktable('myDbTableName', repair_allow_data_loss)
    
  • 修復後、データベースを再度確認し、マルチユーザーモードに設定する必要があります

    ALTER DATABASE [MyDbName] SET MULTI_USER WITH NO_WAIT​
    
1
Sean Smith