OLE DB Provider for DB2

Microsoft Host Integration Server により提供されている Microsoft OLE DB Provider for DB2 を使用すると、SQL Server の分散クエリは DB2 データベースのデータに対してクエリを実行できます。

注意

OLE DB プロバイダのインストールおよび構成の方法の詳細については、プロバイダ付属のマニュアルを参照してください。

DB2 データベースにアクセスするリンク サーバーを作成するには

  1. SQL Server インスタンスを実行しているコンピュータに Host Integration Server クライアント ソフトウェアをインストールし、OLE DB Provider for DB2 をインストールするオプションを選択します。

  2. OLE DB Provider for DB2 からクエリ対象の DB2 データ ソースにアクセスするために必要な接続文字列を決定します。接続文字列を決定する最適な方法は、Host Integration Server の新しい OLE DB データ ソース アプリケーションを使用してデータ リンク ファイルを作成することです。詳細については、Microsoft Host Integration Server のマニュアルを参照してください。

  3. DB2OLEDB を provider_name に、アクセスするデータが格納されている DB2 カタログの名前を catalog に、手順 2. の接続文字列を provider_string に指定して、sp_addlinkedserver を実行し、リンク サーバーを作成します。

    次の例では、DB2 データベースにアクセスするリンク サーバー定義を作成する sp_addlinkedserver の使用方法を示します。

    EXEC sp_addlinkedserver @server = 'DB2SRV',
       @srvproduct = 'Microsoft OLE DB Provider for DB2',
       @catalog = 'SEATTLE',
       @provider = 'DB2OLEDB',
       @provstr =
         'NetLib=SNA;NetAddr=;NetPort=;RemoteLU=SEATTLE;LocalLU=LOCAL;
          ModeName=QPCSUPP;InitCat=SEATTLE;
          Default Schema=WNW3XX;PkgCol=WNW3XX;TPName=;Commit=YES;
          IsoLvl=NC;AccMode=;CCSID=37;PCCodePage=1252;BinAsChar=NO;
          Data Source=Seattle_WNW3XX'
    
  4. sp_addlinkedsrvlogin を実行して、SQL Server ログインから DB2 ログインへのログイン マッピングを作成します。

    次の例では、SQL Server ログイン SQLJoe を DB2 ログイン DB2Joe にマップします。

    EXEC sp_addlinkedsrvlogin 'DB2SRV', false, 'SQLJoe', 'DB2Joe', 'x894jd03?'
    
    注意

    したがって、パスワードは暗号化されずに送信されます。パスワードは、ディスク、バックアップ、およびログ ファイルに保存されたデータ ソース定義やスクリプトで参照できます。この種類の接続では、システム管理者のパスワードを使用しないでください。特定のユーザー環境のセキュリティについては、ネットワーク管理者に相談してください。

上記の手順を実行すると、リンク サーバー名 DB2SRV は、4 つの部分から構成されるサーバー名に使用したり、OPENQUERY 関数の linked_server として指定できるようになります。次に例を示します。

SELECT *
FROM DB2SRV.SEATTLE.WNW3XX.DEPARTMENT

または

SELECT *
FROM OPENQUERY(DB2SRV, 'SELECT * FROM SEATTLE.WNW3XX.EMP_ACT')

DB2 データ ソースに対する分散クエリで NULL 比較が行われる場合は、=、>、< などの比較演算子ではなく、IS NULL または IS NOT NULL を使用します。また、INSERT ステートメントでは、テーブル内の特定の列で NULL が許容されていたり、既定値が設定されていても、テーブル内のすべての列に値を指定する必要があります。