【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【SQLServer2008R2】Accessリンクテーブルで開かれているビューのロック解除方法。

SQLServerデータベースをバックエンドにして、
フロントエンドをAccessにしてシステム構築をするケースは
よくあると思います。

また、データ参照用にSQLServer上にビューを作成し、
AccessMDBからODBCリンクテーブルで接続させて
ユーザーに自由にデータ参照させることも多いかと思います。
ユーザーさんにクエリを作成できるスキルがあれば
各自好きなようにデータ加工できます。

さて、そのビューなのですが、仕様変更等により修正する際、
クライアントから接続中の場合、どのようになるのでしょうか。

結論をいうとSELECTロックがかかり、ビューオブジェクトは修正できません。

SQLServer削除エラー(ロック中のため)
(エラーメッセージ)
XXXXの削除に失敗しました。
ロック要求がタイムアウトしました。(MicrosoftSQLServer エラー:1222)

先にクライアント側からの共有ロックがとられているため、
削除前にSQLServer側で排他ロックがとれずエラーとなっています。

さて、このクライアント側で取得している共有ロックですが
どのタイミングで解除されるのでしょうか?

ODBCリンクテーブルを開いている場合、解除タイミングは
「最終レコードまで読み込まれた時」、もしくは
「テーブルを閉じた時」になります。
テーブルを閉じなかった場合、最終レコードへ移動
するまでずっと共有ロックをとりつづけます。
自動的に最終レコードまで読み込むことはなく、
タイムアウトもないようです。

タイムアウトがないので、ユーザーがテーブルを開いたままで
離席した場合、その間ずっとロックをとっていることになります。

ロック状態の確認には、SQLServer2008ならManagementStudioの
利用状況モニターを使用すると便利です。

インスタンスを選択し、右クリックするとでてくるリストの上から
5番目に「利用状況モニター」があります。

利用状況モニター1

利用状況モニターでは、
セッションID、ユーザープロセス、ログイン、データベース、
タスクの状態、コマンド、アプリケーション、待機時間、
待機の種類、待機リソース、ブロック別、先頭ブロック、
メモリ使用量、ホスト名、WorkheadGroupが確認できます。

AccessのODBCリンクテーブル経由でビューを開いている場合、
コマンド:「SELECT」
待機の種類:「ASYNC_NETWORK_IO」
になっていると思います。

利用状況モニター2

上記のプロセスが、SQLServer側の修正対象オブジェクトへの
ロックとなっていた場合、
このロックを解除できれば修正することができるようになります。

前述のとおり、クライアント側でリンクテーブルを閉じるか、
最終データまで読込をしてもらえればロックは解除されますが、
なんらかの事情でそれができない場合、
SQLServerからロックを強制的に解除することも
可能です。

いろいろと解除方法はあるのですが、
利用状況モニターを使用すればGUIから簡単にロックを解除
することができます。

その方法は、該当するプロセスを右クリックし、
でてくるリストの上から2番目の「強制終了」を選択します。
実行確認メッセージが表示されますので
はいを選択すると該当プロセスが切断されます。

これでSQLServer側のロックが解除され、オブジェクトが修正可能となります。
以上、プログラム入替時のちょっとした豆知識でした。
覚えておいて損はないかと。

【参考】
ロック待ちプロセスの確認については、
松本崇博 Blog (SQL Server Tips) が非常に参考になります。
SQL Server でロック待ちのプロセスをリストアップする方法(ロックの監視)

Stack Overflow
How is data returned from SQL Server

SQL Server Forums
ASYNC NETWORK IO caused by MS Access application

(SQLServer関連商品)
5072円。フル機能の開発ライセンス。
>>SQL Server 2012 Developer 日本語版


>>よくわかるSQL Server 2012データベース構築・管理入門編 (TECHNICAL MASTER)


>>Excel 2010&SQL Server 2008 R2による企業データ分析入門 (DB Magazine SELECTION)

[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【雑記】最新情報!Amazonの「予約商品発売日前日お届け」でTMG便をはずせるかと。
【コンピュータ】Office2013が本日(2013/02/07)発売。対応OSはWin7以降。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)