Freigeben über


Verteilte Abfragen bei mehreren Instanzen von SQL Server

Das Angeben einer Instanz von SQL Server für einen Server, auf dem mehrere Instanzen von SQL Server ausgeführt werden, erfordert keine Syntaxänderungen an Transact-SQL-Elementen, die in verteilten Abfragen verwendet werden. Instanzen können mit einer dieser Methoden in verteilten Abfragen angegeben werden:

  • Geben Sie einen Servernamen mit der Syntax 'server_name\instance_name' im @datasrc-Parameter von sp_addlinkedserver an.

  • Geben Sie 'server=server_name\instance_name' in einer Verbindungszeichenfolge an.

Wenn keine Instanz angegeben ist, stellt die verteilte Abfrage eine Verbindung zu der Standardinstanz von SQL Server auf dem angegebenen Server her.

Im folgenden Beispiel wird das Angeben einer bestimmten Instanz mit dem Namen Payroll auf einem Server mit dem Namen London gezeigt. (Wenn Sie SQLNCLI verwenden, leitet SQL Server zur neuesten Version des OLE DB-Anbieters von SQL Server Native Client um.)

-- 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