aij[beta]

日々の芥

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-) |
忘れないようにメモ
SQL Serverはトレースログを記録できるが、常に記録しておくと、パフォーマンスも落ちるし、ディスク容量も心配。飛行機の墜落事故時にボイスレコーダとフライトレコーダを解析して事故原因を追求するように、DBの障害時にトレースがあったらなあとおもうこともしばしば。

標準機能だけでBalckBox Traceをとるには以下のようにする。(SQL Sevrer 2005の場合)

Trace定義

use master
go
create procedure StartBlackBoxTrace as declare @tid int
exec sp_trace_create @tid output, 8
exec sp_trace_setstatus @tid, 1
go


Trace開始

exec sp_trace_setstatus @traceid = 2, @status = 1;
GO


これで、5MB単位で上書きされるトレースログblackbox_XXXX.trcが、データのデフォルトパスに作成される。
sp_trace_createのオプションはヘルプ参照のこと。

SQL Server起動時に自動起動させるためには以下のようにする。

exec sp_procoption 'StartBlackBoxTrace','startup', true;
go



SQL Serverが停止されると、当然ながらトレースも停止されるので、最後のトレースファイルを採取すると障害原因がわかるかもしれない。大規模なシステムだと5MBではほんの数分なので役に立つかどうかは微妙。正直言って、DBのトラブルは、多数のユーザがログインするようなシステムでは再現することが困難なので、状況を説明する材料程度に考えること。

クラスタ等の無停止状態で、停止させる必要がある時は
Trace停止

exec sp_trace_setstatus @traceid = 2, @status = 0;
GO

で手動で停止させる。


スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。