SQLServerデータ修復コマンドDBCC一覧

6294 ワード

1.DBCC CHECKDB
サーバーを再起動した後、何の操作も行われていない場合は、SQLクエリアナライザで以下のSQLを実行してデータベースの修復を行い、データベースに存在する一致エラーと割り当てエラーを修正します。
use master
declare@databasename varhar(255)
set@databasename='修復が必要なデータベースエンティティの名前'
exec sp_dboption@databasename,N'single',N'true'--ターゲットデータベースをシングルユーザー状態にする
dbcc checkdb(@databasename,REPAIRUALLOW DATA LOSS)
dbcc checkdb(@databasename,REPAIREBUILD)
exec sp_dboption@databasename,N'single',N'false'--ターゲットデータベースを多ユーザー状態にする
DBCC CHECKDB(「修復が必要なデータベースエンティティの名称」)を実行して、データベースに誤りがあるかどうかを確認します。注意:修復後、一部のデータが失われる恐れがあります。
2.DBCC CHECKTABLE
DBCC CHECKDBチェックに誤りがあれば、DBCC CHECKTABLEを使って修復することができます。
useを修復する必要があるデータベースエンティティの名前
declare@dbname varhar(255)
set@dbname='修復が必要なデータベースエンティティの名前'
exec sp_dboption@dbname,'single user','true'
dbcc checktable(「修復が必要なデータテーブルの名称」、REPAIRHuALLOW DATA LOSS)
dbcc checktable(「修復が必要なデータテーブルの名称」、REPAIREBRILD)
----'修復が必要なデータテーブルの名前'をDBCC CHECKDB時報エラーを実行するデータテーブルの名前に変更します。
exec sp_dboption@dbname、'single user'、'false'
3.その他のいくつかの常用修復コマンドDBCC DBREINDEX再構築指定データベースのテーブルの一つまたは複数のインデックス
使い方:DBCC DBREINDEX(表名、')この表のすべての索引を修正します。
======================================================================================
SQL SERVERデータベースの検査と修復方法
K/3製品の普及に伴って、お客様のサービス担当者にSQL SERVERデータベースに対する理解も更に向上させます。K/3の使用中、データベースファイルは頻繁に使用されています。いくつかの原因で、データベースが壊れてしまう可能性があります。この場合のデータベースの検出と修復方法について簡単に説明します。皆様が実際に仕事をしている間に、新しい発見があったら、速やかに情報を提供してください。
1.1 SQL SERVERデータベースの検査
SQL SERVERはデータベース検出のコマンドを提供しており、DBCC CHECKDBでデータベース内の各オブジェクトの割り当てと構造の正確性を検出し、パラメータ制御により、すべてのエラー情報を表示することができます。その文法は以下の通りです
DBCC CHECKDB
(''databasexuname'、[、NOINDEX|{REPAIRKA ALLOWUDATA LOSS]
|REPAIRFAST
|REPAIREBREILD
}
)[WITH{ALLUERRORMSGS}
パラメータの説明:
'databasename'は、検出されたデータベースエンティティ名を表します。
NOINDEXとは、システムテーブル以外の非聚族索引が検出されないことをいう。
REPAIR_ALLOW_DATA_LOSS|REPAIR_FAST𞓜REPAIR_REBUILDとは、発見されたエラーを直接修復することを指し、REPAIR_ALLOW_DATA_LOSS代表は、このエラーが修復できない場合、システムは直接に関連データを削除します。この3つのパラメータのいずれかを持つ場合、データベースは単一のユーザモードでなければなりません。EnterprisManagerのデータベース属性に設定できます。
ALL_ERRORMSGSは、検出されたエラー情報をすべて表示します。そうでなければ、各テーブルには最大200のエラー情報しか表示されません。
NOの_INFOMSGSは、すべての情報を隠蔽し、空間を占有する報告を表す。
検出後、エラーの対象に対して、OBJECT IDとして具体的にエラーの情報を報告し、OBJECT IDからシステムテーブルsyssobjectに関連するテーブル、すなわちNAMEを検索することができる。
1.2 SQL SERVER問題データベースの修復
データベースで測定した後、問題に対して対応する措置を取ることができます。測定後、対象の物理的な保管に問題があることがわかった場合、DBCC CHECKALLOCで修復できます。
DBCC CHECKALLOC('databasemne'𞓜REPAIREBUILD])[WITH{ALLuERRORMSGS]]
システムオブジェクト以外のインデックスが間違っている場合、DBCC DBREINDEXで修復できます。
DBCC DBREINDEX(''database.owner.tablemene',index name[,fillfactor]]])[WITH NO唴FOMSGS]
以上の2つの場合は、DBCC CHECKDB(『db name』、repair Churebuild)を直接使用して修復することもできます。
もう一つの場合は、測定時に、ヒントがデータ接続を確立できない場合、データベースが壊れていることを示します。このような状況に対して、私達は次のような措置を取って修復を試みることができます。
まず、SQL Enterpriseにデータベースを新規作成し(データベース名がtest)、データベースを作成したらSQL Server Service Managerを停止し、顧客データベースのMDAFファイルをtest_に変更します。data.mdf(つまり、新しいデータベースのメインファイル名)を変更したファイルで新しいデータベースの同名ファイルを上書きして、SQL Server Service Managerを起動します。マスターデータベースにシステムテーブルを変更可能な状態に設定します。
ウルトラマスター
Go
スペスconfigre'allow udates'は、1
reconfigure with override
Go
データベースを非常事態に設定:
udate sysdatabases set status=32768 where database'
SQL Server Service Managerを停止して再起動し、ログファイルを再構築します。
DBCC TRACEON(3604)
DBCC REBUILLD_LOG('test'、'test loguldf')
データベースを単一ユーザモードに設定して、検出します。
スペスdboption'test'、'single user'、'true'
DBCC CHECKDB('test')
Go
このデータベースはCHECKDBを実行していますが、テーブルのインデックスが壊れていることが分かりました。具体的なテーブルに対してインデックスを再構築する操作を行います。
DBCC DBREINDEX(表名)
上記の操作を実行しても解決できない場合、インデックスが破壊されたテーブルが一時的なテーブルであるか、またはキーテーブルでない場合は、新規のカバーから導入され、メインテーブルであれば、近いうちにバックアップで回復することができます。バックアップがないと修復できません。
1.3 SQL Serverデータベースはなぜ壊れやすいですか?
以下はマイクロソフトが提供したいくつかのデータベースの破損の原因と一部の予防措置です。
操作問題は、冷起動マシン、熱引きハードディスク、いくつかのデータベースファイルを削除することを含みます。
ディスクコントローラの問題を含むハードウェアの問題。
オペレーティングシステムの問題には、システムに関連する致命的なエラーが含まれています。
1.4予防措置:
1、定期/不定期にCHKDSK(パラメータなし)を実行して、ハードディスクの物理構造を検出し、いくつかのCHKDSK報告の問題を修復する。
2、常にデータをバックアップします。
1.5アプリケーションデータベースの修復例
declare@databasename varhar(255)
set@databasename='AIS 2002122470730'------必ず手動で入力してください。
-------一般的な修復を実行して問題がある場合、データの紛失を許可する修復を行う
-------データが失われた場合の修復要求は、シングルユーザーの下で行います。この場合、中間層、クライアント、sqlの他のモジュールを終了してください。
---すべての機能が終了し、クエリーアナライザマスターにデータベースを単一ユーザに設定します。
exec sp_dboption@databasename,N'single',N'true'
-----クエリーアナライザマスターで、データベースの修復を行います。
dbcc checkdb(@databasename,REPAIRUALLOW DATA LOSS)
dbcc checkdb(@databasename,REPAIREBUILD)
------データベース状態を復元する
exec sp_dboption@databasename,N'single',N'false'
第2章データベースログの破損の修復
次の手順に従ってデータベース事務ログの再構築を試みてください。
注意:事務ログがなくなったため、データベースに提出されたデータがあるかもしれません。
すべてのデータベース名に置き換えます。
2.1ステップ1:
新しいデータベースを作成して、元のデータベースの名前にします。
2.2ステップ2:
停止SQL Server
2.3ステップ3:
古いデータベースのMDFファイルを新しいデータベースの対応するMDFファイルに置換し、LDFファイルを削除します。
2.4ステップ4:
SQL Serverサービスを再起動し、次のコマンドを実行します。
 
  
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
begin tran
update sysdatabases set status = 32768 where db_name'
-- Verify one row is updated before committing
commit tran
2.5ステップ5:
SQLを停止してSQL Serverサービスを再起動し、次のコマンドを実行します。
DBCC TRACEON(3604)
DBCC REBUILLD_LOG('db name','c:\mssql 7\data\dbx_3.LDF')
Go
2.6ステップ6:
SQLを停止して、SQL Serverサービスを再起動して、実行します。
 
  
use master
update sysdatabases set status = 8 where
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
2.7ステップ7:
dbcc checkdbを実行して、データベースの完全性を検査します。
第3章データベース質疑の一般処理
1、次のSQL(システムテーブルを変更するスイッチを入れる)を実行します。
EXEC sp_configre'allow udates'は、1
RECONFIGURE WITH OVERRIDE
2、データベースマスターの表を修正する:sysdatabases
statusフィールドの値を4に変更します。
3、次のSQLを実行します。
EXEC sp_configre'allow udates'は、0
RECONFIGURE WITH OVERRIDE。