Requêtes distribuées sur plusieurs instances de SQL Server

La spécification d'une instance de SQL Server sur un serveur exécutant plusieurs instances de SQL Server ne nécessite aucune modification de la syntaxe des éléments Transact-SQL utilisés dans les requêtes distribuées. Des instances peuvent être spécifiées dans des requêtes distribuées en utilisant l'une des méthodes suivantes :

  • Spécifiez un nom de serveur en utilisant la syntaxe 'server_name\instance_name' dans le paramètre @datasrc de sp_addlinkedserver.

  • Spécifiez 'server=server_name\instance_name' dans une chaîne de connexion.

Si une instance n'est pas spécifiée, la requête distribuée se connecte à l'instance par défaut de SQL Server sur le serveur spécifié.

Les exemples ci-dessous montrent comment spécifier une instance spécifique nommée Payroll sur un serveur nommé London. (L'utilisation de SQLNCLI et SQL Server vous redirigera vers la version la plus récente du fournisseur 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