Share via


Query distribuite in più istanze di SQL Server

La specifica di un'istanza di SQL Server in un server che esegue più istanze di SQL Server non richiede modifiche alla sintassi degli elementi Transact-SQL utilizzati nelle query distribuite. Per specificare istanze nelle query distribuite, è possibile procedere in uno dei modi seguenti:

  • Specificare un nome di server utilizzando la sintassi 'server_name\instance_name' nel parametro @datasrc di sp_addlinkedserver.

  • Specificare 'server=server_name\instance_name' in una stringa di connessione.

Se non viene specificata un'istanza, la query distribuita si connette all'istanza predefinita di SQL Server nel server specificato.

Negli esempi seguenti viene specificata un'istanza denominata Payroll nel server London. (L'utilizzo di SQLNCLI e SQL Server reindirizza alla versione più recente del provider OLE DB SQL Server Native Client.)

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