Share via


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

SQL Server の複数のインスタンスを実行するサーバーで SQL Server のインスタンスを指定する際には、分散クエリで使用される Transact-SQL 要素に構文上の変更を加える必要はありません。インスタンスを分散クエリに指定するには、次の方法のいずれかを使用します。

  • sp_addlinkedserver@datasrc パラメーターに 'server_name\instance_name' という構文を使用してサーバー名を指定します。

  • 接続文字列に 'server=server_name\instance_name' を指定します。

インスタンスを指定しない場合、分散クエリは指定されたサーバー上の SQL Server の既定のインスタンスに接続されます。

次の例は、London という名前のサーバー上の Payroll という名前の特定のインスタンスを指定する方法を示しています。(SQLNCLI を使用します。SQL Server により最新バージョンの SQL Server Native Client OLE DB プロバイダーにリダイレクトされます)。

-- Define a linked server on an instance of SQL Server by using @datasrc.
sp_addlinkedserver
    @server = 'LondonPayroll1',
    @srvproduct = ' ',
    @provider = 'SQLNCLI',
    @datasrc = 'London\Payroll'

-- Define a linked server on an instance of SQL Server by using
-- server_name\instance_name in a provider string.
sp_addlinkedserver
    @server = 'LondonPayroll2',
    @srvproduct = ' ',
    @provider = 'SQLNCLI',
    @provstr = 'Server=London\Payroll'

-- Specify an instance of SQL Server in OPENDATASOURCE
-- by using a provider string.
SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks2008R2.HumanResources.Employee

-- Specify an instance of SQL Server in OPENROWSET
-- by using a provider string.
SELECT a.*
FROM OPENROWSET(
     'SQLNCLI',
     'Server=London\Payroll;Trusted_Connection=yes',
      AdventureWorks2008R2.HumanResources.Employee) AS a