- PR -

SqlServerで更新中のテーブルをAccessで参照する方法

1
投稿者投稿内容
ヤマハブラザーズ兄
会議室デビュー日: 2006/01/19
投稿数: 10
投稿日時: 2006-02-02 10:46
WinServer2003+SqlServerで開発を行っております、
SqlServer歴一ヶ月の超初心者ですが、よろしくお願い
致します。

SqlServer2000で、DTSパッケージ中のSQL実行タスクにて
Select〜Updateを行うプロシージャを実行していますが、
Update実行中にAccessで変更前/変更後のデータを参照
する事が出来ません。

プロシージャ中に
「SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED」
を記述したり、
DTSパッケージのプロパティにてトランザクション分離
レベルを「READ UNCOMMITTED」に設定したりするものの、

Accessで参照を行おうとすると、
「ODBS--呼び出しが失敗しました
 [ODBC SQL SERVER DRIVER]時間切れになりました」
とタイムアウトになってしまいます。

Accessで上記動作を行う場合、プロシージャ側もしくは
Access側に何かしらの設定が必要になるのでしょうか?

※ちなみに、SqlServerのクエリアナライザで更新中の参照を
 試みた結果、Select時に(ReadUnCommitted)のテーブルヒントを
 付与する事で参照出来ました。
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2006-02-04 01:26
引用:

ヤマハブラザーズ兄さんの書き込み (2006-02-02 10:46) より:

Accessで参照を行おうとすると、
「ODBS--呼び出しが失敗しました
 [ODBC SQL SERVER DRIVER]時間切れになりました」
とタイムアウトになってしまいます。



お疲れさまです。

申し訳ないです,私だけかもしれませんが,
本件の DTS と Access の関係がよくわかりません。

DTS パッケージを実行中に
他の Access ADP などからデータを参照しようとしているということですか?

それとも,
DTS パッケージ内から Access に何か影響を及ぼそうとしているということでしょうか?

実現しようとしている要件をもう少し詳説願えますでしょうか。
----------
TimberLandChapel
http://blogs.timberlandchapel.com/blogs/timberlandchapel/
Desmo
大ベテラン
会議室デビュー日: 2004/03/24
投稿数: 149
投稿日時: 2006-02-06 15:07
引用:

TLCさんの書き込み (2006-02-04 01:26) より:
本件の DTS と Access の関係がよくわかりません。


質問の主旨は、
「AccessからODBC経由でSQL Serverにアクセスしているが、DTSでUpdate中だとAccessからの参照がタイムアウトするので回避する方法を教えて欲しい」
ということかと思います。
SQL Serverはトランザクション実行時は、そのレコードが(select文などで)参照できなくなり、どうしても参照したい場合は"ダーティリード"という指定をしなくてはなりません。ODBCに"ダーティリード"の設定があれば問題解決なのでしょうが・・・ 申し訳ありません、私もそこから先は知りません。
momotaro
会議室デビュー日: 2003/07/23
投稿数: 14
投稿日時: 2006-02-06 15:52
こんにちは。

引用:

WinServer2003+SqlServerで開発を行っております、
SqlServer歴一ヶ月の超初心者ですが、よろしくお願い
致します。

SqlServer2000で、DTSパッケージ中のSQL実行タスクにて
Select〜Updateを行うプロシージャを実行していますが、
Update実行中にAccessで変更前/変更後のデータを参照
する事が出来ません。

プロシージャ中に
「SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED」
を記述したり、
DTSパッケージのプロパティにてトランザクション分離
レベルを「READ UNCOMMITTED」に設定したりするものの、

Accessで参照を行おうとすると、
「ODBS--呼び出しが失敗しました
 [ODBC SQL SERVER DRIVER]時間切れになりました」
とタイムアウトになってしまいます。

Accessで上記動作を行う場合、プロシージャ側もしくは
Access側に何かしらの設定が必要になるのでしょうか?

※ちなみに、SqlServerのクエリアナライザで更新中の参照を
 試みた結果、Select時に(ReadUnCommitted)のテーブルヒントを
 付与する事で参照出来ました。



他のセッションのトランザクションに参加する方法はあります。
sp_bindsessionをBooksOnLineで調べてみてください。
参考になりますでしょうか?
ヤマハブラザーズ兄
会議室デビュー日: 2006/01/19
投稿数: 10
投稿日時: 2006-02-09 15:11
TLCさん、Desmoさん、momotaroさん、コメントありがとうございます。
返答が遅れて申し訳ありません。

>TLCさん、Desmoさん

当方の質問の主旨は、Desmoさんのコメントの通りです。
「DTSでupdate実行中」に、
「SqlServerのクエリアナライザ等からダーティリードで参照は可能」だが、
「Accessにて同テーブルを開こうとすると、タイムアウトになる」為
タイムアウトにならずに、Accessから参照する方法を知りたい、という事でした。
(わかりづらくて申し訳無い)

Desmoさんのおっしゃる、”Accessでのダーティリード(の様な)読み取り設定”
が可能かどうかは、
私も色々試してみたのですが、状況は変わりませんでした。

>momotaroさん

sp_bindsessionについて、調べてみます。
アドバイスありがとうございます。

返信が遅れていたので、とりあえず今回はこれで。
1

スキルアップ/キャリアアップ(JOB@IT)