都内で働くSEの技術的なひとりごと

都内でサラリーマンやってます。マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。よろしくお願いします♪

行セット関数である OPENROWSET の存在をしばらく忘れていた....

 行セット関数である 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 のパフォーマンス検証をしてみよう。

※行セット関数は、他にもあるので調べてみてくださいね。覚えると非常に便利ですよ。