SSブログ

Accessのリンクテーブル「ODBC--呼び出しが失敗しました」タイムアウト設定とパススルークエリ

Access2010 から、SQL Server 2008 R2 のDBへODBC接続して、リンクテーブルを設定する。
Access側でローカルクエリを実行すると、
 
   「ODBC--呼び出しが失敗しました。[ODBC SQL SERVER DRIVER]時間切れになりました」 
 
となってしまう。
 
そもそも、リンクテーブルに対して、joinの多用や、クエリの入れ子が深いとパフォーマンスは期待できない。
 
さらに、SQL Server側で、SSISやレプリケーションなどのトランザクション実行時は、レコードが参照できなくなり、
参照したい場合は "ダーティリード" という指定をする必要があるらしい。
 
ここでは、タイムアウトの設定とパススルークエリについてまとめ、 ダーティリードについては、別の機会にまとめる。
 
◆タイムアウトの設定
Accessのクエリをデザインモードで開く
[デザイン] タブ の [プロパティシート] をクリックして開く
[ODBCタイムアウト] の項目値を変更する  (デフォルト=60(秒)、0=タイムアウトなし)
 
◆パススルークエリ
Accessのクエリをデザインモードで開く
  作成 > クエリデザイン > [テーブルの表示] ダイアログは閉じる
[デザイン] タブ の [パススルー] をクリック
同じく [プロパティシート] をクリックしえ開く 
[ODBC 接続文字列] の項目に接続文字列を設定 
  たとえば、
  "ODBC;DRIVER=SQL Server;LANGUAGE=日本語;DATABASE=DBname;
     SERVER=HostPathname;Integrated Security=SSPI;Auto Translate=True;"
接続文字列情報にパスワードとログオン名を保存する場合、確認ダイアログが表示されるので、[はい] をクリック 
SQL パススルー クエリ ウィンドウにコピーしたAccessクエリを貼り付ける
   ここでAccessクエリをSQLクエリに準じて書き換える
   たとえば、
   dbo_Tablename は、dbo.Tablename という記述に、IIF文は、case文に、といった具合

(Windows Server 2008R2, SQL Server 2008 R2、Windows 7、 Access2010、ODBC)
 

タグ:Windows ODBC SQL

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。