SQL Serverで一時的に別のインスタンス(サーバー)のデータベースを使用する方法

方法としては、アドホックな分散クエリを使用して別インスタンスのオブジェクトに接続します。

手順としては、アドホックな分散クエリを許可するようにSQL Serverの設定を変更し、OPENDATASOURCE関数を使用するという手順になります。

SQL Serverの設定変更

sp_configureストアードプロシージャを使用して、アドホックな分散クエリを使用できるよう、以下のように設定します。

sp_configure 'show advanced options', 1;
RECONFIGURE;

OPENDATASOURCE関数の使用

 OPENDATASOURCE関数は以下のような構文になっています。

OPENDATASOURCE('', '')

一つ目の引数にOLEDBプロバイダ名を、二つ目の引数にその接続文字列を記入します。

以下は別インスタンスのテーブルからデータを取得して、ローカルのテーブルに取得したデータを挿入する例です。

INSERT INTO [TankLog].dbo.HourlyLog(
    pointId,
    reportDateTime,
    value,
    carryForward,
    [status]
)
SELECT [pointId]
      ,[reportDateTime]
      ,[value]
      ,[carryForward]
      ,[status]
  FROM OPENDATASOURCE(
    'SQLNCLI', 'Data Source=サーバー名\インスタンス名;Integrated Security=SSPI'
  ).[TankLog].[dbo].[HourlyLog]
  WHERE [reportDateTime] = '2012-05-30 01:00'
  ORDER BY pointId

コメントを残す