行セット関数である OPENROWSET の存在をしばらく忘れていました。FROM句にテーブルとして指定できます。OPENROWSET はさまざまなデータソースに対応可能です。リモートサーバ上のテーブル、CSV ファイル、エクセルファイル、mdb ファイルなど様々です。今回は、リモートサーバーのテーブルを取得してみます。リモートサーバ上のテーブルを OPENROWSET で取得するには、下記のコマンドを実行し、アドホック分散クエリを有効にする必要があります。
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
OPENROWSET 関数を使用して、(サンプル的には変ですが....) localhost に対してクエリを実行します。
SELECT *
FROM OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks2012.HumanResources.Department
ORDER BY GroupName, Name') Where NAME = 'Executive'
便利ですね。今度時間があったら、BULK モードを試してみて、BULK INSERT , bcp , OPENROWSET のパフォーマンス検証をしてみよう。
※行セット関数は、他にもあるので調べてみてくださいね。覚えると非常に便利ですよ。