河端善博 ブログ / SQL Server / PASSJ

SQL Server, .NET, PASSJ

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  945 投稿数 :: 112 ストーリー :: 1482 コメント :: 596 トラックバック

ニュース

Windows Live Alerts
My Yahoo!に追加
Add to Google dotnetnuke.jp
NPOPLUS.JP
MVP
PASSJ

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

トランザクションをロールバックしたときに、一部の更新をコミットする方法です。
メッセージキューを利用します。

よくあるシナリオは、処理の経過をログとして残したい場合です。

データベース処理中の記録を専用のテーブルに残したい。
もし、処理中にエラーが発生し、ロールバックした場合にでも、記録は残しておきたい。

実装は次のようにします。

  1. メッセージキューをインストールします
  2. ログ保存用のメッセージキューを作成します。
  3. トランザクション中のログを保存したい部分で、メッセージキューにメッセージを送信します。
  4. 定期的に、メッセージキューの内容をデータベースに保存します。

■メッセージキューの送受信用の拡張ストアドプロージャ

■メッセージキューのCOMオブジェクトを利用する方法

メッセージキュー送受信用のCOMオブジェクトは標準で提供されています。
これを使うには、sp_OACreate などのCOM用のストアドプロシージャを使います。
たぶん、sp_OACreate はシステム負荷が高く、ログには向かないと思われます。

■メッセージキュー MSMQ って ?

Windows が提供する非同期通信のための通信路です。
ローカルのコンピュータ上のプログラム間でも利用できますし、他のコンピュータとの通信にも利用できます。
メッセージを通信途中で失うことがないように保護する機能があります。
Windows 2000, XP, 2003 で利用することかができます。
※今回 XP_MSMQ を Windows XP 上でテストしました。

投稿日時 : 2004年6月18日 19:51

コメントを追加

# ROLLBACK 境界の越え方(TABLE 型の挙動) 2004/06/19 22:33 米田 Blog ( SQL Server MEMO )
ROLLBACK 境界の越え方(TABLE 型の挙動)

# ROLLBACK しても、一部のデータをコミットしたい (テーブル変数版) 2004/06/22 10:49 河端善博の .TEXT でウェブログ
ROLLBACK しても、一部のデータをコミットしたい (テーブル変数版)

# MSMQ、メッセージキューを扱った記事をまとめてみました 2004/11/18 11:54 河端善博の .TEXT でウェブログ
MSMQ、メッセージキューを扱った記事をまとめてみました

コメント

タイトル:
名前:
Url:
コメント: