2009年2月16日月曜日

SQL Server の複数インスタンス上の分散クエリ

Accessの様に別々のODBCからのリンクテーブルをクエリでJOINする場合に有効である。



SQL Server の複数のインスタンスを実行するサーバーで Microsoft® SQL Server™ 2000 のインスタンスを指定する際には、分散クエリで使用される Transact-SQL 要素に構文上の変更を加える必要はありません。インスタンスを分散クエリに指定するには、以下のモードのどちらかを使用します。
sp_addlinkedserver の @datasrc パラメータに 'server_name/instance_name' という構文を使用してサーバー名を指定します。
接続文字列に Server=server_name; INSTANCENAME=instance_name を指定します。
インスタンスを指定しない場合、分散クエリは指定されたサーバー上の SQL Server 2000 の既定のインスタンスに接続されます。
以下に、サーバー名 London 上に Payroll という名前の特定インスタンスを指定する例を示します。-- Define a linked server on an instance of SQL Server using @datasrc.
sp_addlinkedserver
@server = 'LondonPayroll1',
@provider = 'SQLOLEDB',
@datasource = 'London/Payroll'
-- Define a linked server on an instance of SQL Server using
-- INSTANCENAME in a provider string.
sp_addlinkedserver
@server = 'LondonPayroll2',
@provider = 'SQLOLEDB',
@provstr = 'Server=London;INSTANCENAME=Payroll'
-- Specify an instance of SQL Server in OPENDATASOURCE
-- using Data Source.
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=London/Payroll;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
-- Specify an instance of SQL Server in OPENROWSET
-- using a provider string.
SELECT a.*
FROM OPENROWSET(
'SQLOLEDB',
'Data Source=London;INSTANCENAME=Payroll;
User ID=MyUID;Password=MyPass',
Northwind.dbo.Categories
) AS a
-- Specify an instance of SQL Server in OPENROWSET
-- using a the datasource parameter.
SELECT a.*
FROM OPENROWSET(
'SQLOLEDB','London/Payroll','MyUID','MyPass',
'SELECT * FROM Northwind.dbo.Categories'
) AS a

0 件のコメント: