[SSIS] SSIS パッケージの Connect Timeout の既定値 0 は、無制限ではない。


佐藤 靖典
SQL Developer Support Engineer

こんにちは。

今回の記事では、SSIS パッケージの接続マネージャーの Connect Timeout プロパティ (接続タイムアウト) の動作について紹介します。この動作は、製品の仕様上の動作ですが、混乱しやすい部分で質問をいただくことも多いため、詳しく説明します。

 

1. 概要

ほとんどの開発者は、.NET Framewrok データ プロバイダ、OLE DB プロバイダ、ODBC ドライバで設定できる接続タイムアウトを 0 に設定した場合、無制限を意味することをご存知だと思います。
しかしながら、SQL Server Integration Services (SSIS) パッケージの接続マネージャーの Connect Timeout の既定の表示 0 は、無制限を示しているものではなく、未設定を示しています。未設定の場合は、使用する OLE DB プロバイダや ODBC ドライバの接続タイムアウトの既定値が使用されます。
SQL Server ODBC Driver や OLE DB Provider for SQL Server、SQL Server Native Client の接続タイムアウトの既定値は 15 秒です。

 

2. 詳細

OLE DB 接続マネージャーなどを作成すると、既定で Connect Timeout プロパティは 0 と表示されます。(図 – 1)
この図の例では、SQL Server Native Client 11.0 を使用しているため、本プロバイダの既定値 15 秒が接続タイムアウト値となります。

図 – 1
image

既定値以外の Connect Timeout を使用する場合は、明示的に値を設定します。(図 – 2)

図 – 2
image

Connect Timeout 値を無制限の 0 と設定する場合は、既定の表示の 0 を別の値に変更後、0 を設定します。(図 – 3)
既定の状態 (図 – 1) との違いは、既定値から変更した場合の Connect Timeout 値は太字 (Bold) になっていることです。

図 – 3
image

また、既定値から変更した場合の PackageName.dtsx ファイルをメモ帳などで開くと、Connect Timeout プロパティの設定が追加されていることを確認できます。(図 – 4)

図 – 4

<DTS:ConnectionManager
  DTS:ConnectionString=”Data Source=HostName\InstanceName;Initial Catalog=testdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;Connect Timeout=0;Auto Translate=False;” />

 

3. 補足

ADO.NET の接続マネージャー (.NET Framework Data Provider for SQL Server) を使用した場合は、.NET Framework Data Provider for SQL Server の Connect Timeout の既定値である 15 秒が初期値として表示されます。(図 – 5)

図 – 5
image

動作の詳細は Business Intelligence Development Studio (BIDS) / SQL Server Data Tools (SSDT) の内部動作であるために割愛しますが、簡単にお伝えしますと、BIDS や SSDT はプロバイダーの各プロパティを取得する動作となっています。.NET Framework Data Provider for SQL Server を使用した場合は、Connect Timeout を含むすべてのプロパティ値を取得しますが、OLE DB 接続マネージャーを使用した場合は、各 OLE DB プロバイダーの共通のプロパティのみ取得し、OLE DB プロバイダーによってはプロパティが存在しない Connect Timeout は取得せず、OLE DB 接続マネージャーの表示を 0 としています。

Comments (1)

  1. よくわからない。 より:

    OLE接続マネージャの画面は何の画面ですか? 
    SSISパッケージを開発するときのVIsua Studioの画面ですか?
    それとも、SQL Server Management Studioの画面ですか?
    書いてあることはわかっても何のツールの画面かちゃんと書いてくれないとどうやっていいか結局分からん。

Skip to main content