Share via


Consultas distribuidas en varias instancias de SQL Server

Para especificar una instancia de SQL Server en un servidor que ejecuta varias instancias de SQL Server no es necesario modificar la sintaxis de los elementos Transact-SQL que se emplean en las consultas distribuidas. Para especificar las instancias en las consultas distribuidas se puede utilizar uno de los métodos siguientes:

  • Especificar un nombre de servidor con la sintaxis 'server_name\instance_name' en el parámetro @datasrc de sp_addlinkedserver.

  • Especificar 'server=server_name\instance_name' en una cadena de conexión.

Si no se especifica ninguna instancia, la consulta distribuida se conecta a la instancia predeterminada de SQL Server en el servidor indicado.

En los ejemplos siguientes se muestra cómo se especifica una instancia denominada Payroll en un servidor llamado London. (El uso de SQLNCLI y SQL Server redirigirá a la última versión del proveedor OLE DB de 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