Date: Mon, 24 Jan 2005 11:25:50 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です、こんにちは
-----Original Message-----
From: 堀江正浩 [mailto:who@example.ne.jp]
Sent: Sunday, January 23, 2005 11:39 PM
To: who@example.ne.jp
Subject: [ml-msde-beg:01440] ロック行の監視について
>たとえば、
>①あるプロセスが、とあるテーブルのあるレコードに
>ロックをかけていたとします。(排他ロック)
>②そこへ別のプロセスが、①と同様のレコードにアクセスしようとすれば、
>当然待たされます。
>
>①の作業が長ければ長いほど、待たされますが、
>別プロセスが起動して同様のロックを取得しようとする前に
>該当レコードにロックが掛かっていないか確認する方法は無いでしょうか?
ロック タイムアウトのカスタマイズ
http://www.microsoft.com/japan/msdn/library/ja/acdata/ac_8_con_7a_5n78.asp?f
rame=true
SET LOCK_TIMEOUT 命令は、お試しになりましたか?
ロック待ちの時間を定義できます。
SET LOCK_TIMEOUT 0
にすると、ロックが即座に取得できないとエラーが発生します
エラーメッセージ番号は、1222です。
この番号が、@@ERRORに入ります
SET LOCK_TIMEOUT -1
にすると、ロックが取得できるまで待機します(既定値)
SQLServerのシステムテーブル等を使って解決される手段も無いわけでは
ありませんが、
-----Books Online『システムテーブル』より------
システム テーブルの形式は、SQL Server の内部アーキテクチャに依存し、
リリースごとに変化する可能性があります。このため、ドキュメントに記載
されていないシステム テーブルの列に直接アクセスするアプリケーションを
作成すると、SQL Server の最新バージョンにアクセスするために変更を
余儀なくされることがあります。
--------------------------------------------------------
と書かれているように、バージョン間の互換性が無くなる可能性があります。
もちろん、DBCC系の非公開APIも同様です。
このような理由から、できる限り互換性の保証された情報の範囲内で
開発することをおすすめします。
ただマイクロソフト社のサポート情報等には、Books Onlineには掲載されて
いない非公開情報が使われるので、注意が必要です。
------------------------------------
(株)日本技術ソフト開発
堀川 明 (Akira Horikawa)
01月24日(月曜日) 11時24分記
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|