0

レコードを更新しているときにレコードロックが発生し、続行できないプロセスがあるとします。プロセスは通常ブロックされると思います(失敗してアプリケーションに独自の再試行ロジックを実装するように要求するのとは対照的です)。

これがそうだと仮定すると、このブロック/ロックはどのように正確に解放されますか?2つの一般的な選択肢があります。(1)ドライバーはNミリ秒ごとにSQLServerをポーリングします。(2)SQL Serverは、ロックが解除されるとドライバーに通知します。

ドライバーや構成などに多少のばらつきはあると思いますが、一般的な考え方を探しています。

4

2 に答える 2

2

ない。ドライバーはブロック プロセスに関与しません。クエリを実行している内部 SQL Server スレッド (またはファイバー) がブロックされ、複数のメカニズムが関与している可能性があります (一部のスピン待機、一部のポーリング、一部のブロックなど)。ドライバーはただ結果を待っています。

于 2012-07-05T15:18:21.140 に答える
1

クライアントの「ドライバー」は通常、SQL Serverのロックに関与したり、通知されたりすることはありません。SQL Server、コマンド要求(通常はバッチ)が実行を完了したか、クライアントにデータを送信する準備ができたときに、クライアントに通知します。

于 2012-07-05T15:20:39.160 に答える