症状
更新処理時にエラー、ピボットのサーバーの参照がエラーできない
修復方法
修復コマンド サーバーが動いているPCで
osql -S サーバー名 -U username
Use master
go
sp_dboption dbname, single, true
Use dbname
go
DBCC CHECKDB(DBname,REPAIR_ALLOW_DATA_LOSS )
go
sp_dboption dbname, single, false
go
ロックがかかっていたらエンタープライズマネージャーで調べ片っ ぱしから強制終了
他の修復方法 -シングルモードにせずに修復するには
*エラーテーブルを他のテーブルに件数を限定してコピー
1.エラーテーブルを damyテーブルにコピー
2.ダミーテーブルをクリア、テーブル構成だけが残る
3.ダミーテーブルに、エラーテーブルを年月を指定してコピー(データ件数を絞る、サイズが大きすぎてエラーになっていると推測、テーブルをクリアした意味がある?)
4.エラーテーブルをリネイム
5.ダミーテーブルをエラーのあったテーブルに名前変更
第3の方法
データベースの復元
dbcc checkdbや checktableが失敗するとデータベースが消失するので仕方なく、エラー前のデータから復元するわけですが。とりあえずそれでうまく更新できるようになったりします。。
今回の場合14/10/8、chkdskでもブルースクリーンが出たので、hddレベルのエラーかもしれないというか、イベントログにftdiskとかntfsのエラーが出まくってたのでhdd要因。
---イベントログ----------------
chkdisk時に出ました。
イベントの種類: 警告
イベント ソース: Ftdisk
イベント カテゴリ: ディスク
イベント ID: 57
日付: 2014/10/07
時刻: 18:42:42
説明:
データをトランザクション ログにフラッシュできませんでした。障害が発生する可能性があります。
イベントの種類: 警告
イベント ソース: Ntfs
イベント カテゴリ: なし
イベント ID: 50
日付: 2014/10/07
時刻: 18:42:37
説明:
{遅延書き込みデータの紛失} ファイル のためのデータを一部保存できませんでした。データを損失しました。 このエラーは、コンピュータのハードウェアまたはネットワーク接続の障害によって発生した可能性があります。このファイルをどこか別の所に保存してください。
--------------------------------------
処置
ユーザーデータベースをデタッチして別のドライブにコピーしてアタッチ
*デタッチしないとコピー不可だった。
システムデータベースはどうしたものか
どうしたものかじゃなくて、移さないとやばいのだが。。休みにでも移すか
参考)SQL Server のデタッチとアタッチ機能を使用して SQL Server データベースを新しい場所に移動する方法
------------------------------------
原因不明
原因の推測
システムがおかしい
再起動後823エラーがよく出る
HDD LIFEを常駐させたらエラー頻発
特定のDBでエラーが出る
勘定奉行の翌月更新がかからなかった マウスはきく、NUM LOCKは反応するが他のメニューが固まる。 他のサーバーに移行したらすんなり更新できた
テーブルがでかすぎるのか? 46万件
月で一括DELETE 一括追加しているがたまに数字フィールドに文字が入ることがあり そのせいでインデックスが壊れるのか?
普通は文字型が違うエラーで止まるはずだが。。。
sp_dboption dbname, single, false
go
ロックがかかっていたらエンタープライズマネージャーで調べ片っ
他の修復方法 -シングルモードにせずに修復するには
*エラーテーブルを他のテーブルに件数を限定してコピー
1.エラーテーブルを damyテーブルにコピー
2.ダミーテーブルをクリア、テーブル構成だけが残る
3.ダミーテーブルに、エラーテーブルを年月を指定してコピー(データ件数を絞る、サイズが大きすぎてエラーになっていると推測、テーブルをクリアした意味がある?)
4.エラーテーブルをリネイム
5.ダミーテーブルをエラーのあったテーブルに名前変更
第3の方法
データベースの復元
dbcc checkdbや checktableが失敗するとデータベースが消失するので仕方なく、エラー前のデータから復元するわけですが。とりあえずそれでうまく更新できるようになったりします。。
今回の場合14/10/8、chkdskでもブルースクリーンが出たので、hddレベルのエラーかもしれないというか、イベントログにftdiskとかntfsのエラーが出まくってたのでhdd要因。
---イベントログ----------------
chkdisk時に出ました。
イベントの種類: 警告
イベント ソース: Ftdisk
イベント カテゴリ: ディスク
イベント ID: 57
日付: 2014/10/07
時刻: 18:42:42
説明:
データをトランザクション ログにフラッシュできませんでした。障害が発生する可能性があります。
イベントの種類: 警告
イベント ソース: Ntfs
イベント カテゴリ: なし
イベント ID: 50
日付: 2014/10/07
時刻: 18:42:37
説明:
{遅延書き込みデータの紛失} ファイル のためのデータを一部保存できませんでした。データを損失しました。 このエラーは、コンピュータのハードウェアまたはネットワーク接続の障害によって発生した可能性があります。このファイルをどこか別の所に保存してください。
--------------------------------------
処置
ユーザーデータベースをデタッチして別のドライブにコピーしてアタッチ
*デタッチしないとコピー不可だった。
システムデータベースはどうしたものか
どうしたものかじゃなくて、移さないとやばいのだが。。休みにでも移すか
参考)SQL Server のデタッチとアタッチ機能を使用して SQL Server データベースを新しい場所に移動する方法
------------------------------------
原因不明
原因の推測
システムがおかしい
再起動後823エラーがよく出る
HDD LIFEを常駐させたらエラー頻発
特定のDBでエラーが出る
勘定奉行の翌月更新がかからなかった マウスはきく、NUM LOCKは反応するが他のメニューが固まる。
テーブルがでかすぎるのか? 46万件
月で一括DELETE 一括追加しているがたまに数字フィールドに文字が入ることがあり
普通は文字型が違うエラーで止まるはずだが。。。
あまりにも頻繁にエラーが起こるので
返信削除スクリプト化した
0dbcc.bat
osql -S servername -U sa -P xxx -i "C:\My Documents\0dbcc.sql"
0dbcc.sql
Use master
go
sp_dboption dbname, single, true
Use dbname
go
DBCC CHECKDB(dbname,REPAIR_ALLOW_DATA_LOSS )
go
sp_dboption dbname, single, false
go
quit
bコマンドプロンプトに
返信削除osql -S servername -U sa -P xxx -i "C:\My Documents\0dbcc.sql"
を貼り付けて使った方がいいかも
db使用中だと一瞬で終わってエラーが見れないため
x206 823エラーが解消したので報告する
返信削除USB外付けHDDをはずしてネットワーク経由で別のHDDにバックアップするようにしたら、823エラーが嘘のように出なくなった。hddを横に寝かせて異常に熱を持っていたのでそのせいか。。詳細不明
sqlserverのバックアップエージェントか整合性の処理で異常があってその影響で823エラーが出ていたのか。。。異常のログは出ていない
一週間ほどSQLSERVERがエラーなしだったが、WINDOWS UPDATEで自動更新、再起動後エラーが再発した
返信削除