Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

sp_addlinkedserver (Transact-SQL)

Crée un serveur lié. Un serveur lié autorise l'accès à des sources de données OLE DB par l'intermédiaire de requêtes distribuées et hétérogènes. Lorsqu'un serveur lié est créé à l'aide de sp_addlinkedserver, il est possible d'exécuter des requêtes distribuées sur ce serveur. Si le serveur lié est défini comme une instance de SQL Server, les procédures stockées distantes peuvent être exécutées.

S'applique à : SQL Server (SQL Server 2008 jusqu'à la version actuelle).

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
     [ , [ @provider= ] 'provider_name' ]
     [ , [ @datasrc= ] 'data_source' ] 
     [ , [ @location= ] 'location' ] 
     [ , [ @provstr= ] 'provider_string' ] 
     [ , [ @catalog= ] 'catalog' ] 

[ @server= ] 'server'

Nom du serveur lié à créer. server est de type sysname et n'a pas de valeur par défaut.

[ @srvproduct= ] 'product_name'

Nom de produit de la source de données OLE DB à ajouter comme serveur lié. product_name est de type nvarchar(128), avec NULL comme valeur par défaut. Si le nom du produit est SQL Server, il n'est pas nécessaire de spécifier provider_name, data_source, location, provider_string et catalog.

[ @provider= ] 'provider_name'

ID de programme unique (PROGID) du fournisseur OLE DB correspondant à la source de données. provider_name doit être unique pour le fournisseur OLE DB spécifié installé sur l'ordinateur actuel. provider_name est de type nvarchar( 128 ). Sa valeur par défaut est NULL ; cependant, si provider_name est omis, SQLNCLI est utilisé. (L'utilisation de SQLNCLI et SQL Server redirigeront vers la version la plus récente du fournisseur SQL Server Native Client OLE DB). Le fournisseur OLE DB est censé être enregistré avec le PROGID spécifié dans le Registre.

[ @datasrc= ] 'data_source'

Nom de la source de données, tel qu'il est interprété par le fournisseur OLE DB. data_source est de type nvarchar(4000). data_source est transmis comme propriété DBPROP_INIT_DATASOURCE pour initialiser le fournisseur OLE DB.

[ @location= ] 'location'

Emplacement de la base de données, tel qu'il est interprété par le fournisseur OLE DB. location est de type nvarchar(4000), avec NULL comme valeur par défaut. location est transmis comme propriété DBPROP_INIT_LOCATION pour initialiser le fournisseur OLE DB.

[ @provstr= ] 'provider_string'

Chaîne de connexion spécifique au fournisseur OLE DB identifiant une source de données unique. provider_string est de type nvarchar(4000), avec NULL comme valeur par défaut. provstr est transmis à IDataInitialize ou défini comme propriété DBPROP_INIT_PROVIDERSTRING pour initialiser le fournisseur OLE DB.

Lorsque le serveur lié est créé sur le fournisseur SQL Server Native Client OLE DB, l'instance peut être spécifiée à l'aide du mot clé SERVER sous la forme SERVER=servername\instancename, afin de spécifier une instance de SQL Server. servername représente le nom de l'ordinateur sur lequel s'exécute SQL Server, tandis que instancename représente le nom de l'instance SQL Server spécifique à laquelle l'utilisateur doit être connecté.

Remarque Remarque

Pour accéder à une base de données miroir, une chaîne de connexion doit contenir le nom de la base de données. Ce nom est nécessaire pour permettre au fournisseur d'accès aux données d'effectuer des tentatives de basculement. La base de données peut être spécifiée dans le paramètre @provstr ou @catalog. Le cas échéant, la chaîne de connexion peut également fournir un nom de partenaire de basculement.

[ @catalog= ] 'catalog'

Catalogue à utiliser lors de l'établissement d'une connexion au fournisseur OLE DB. catalog est de type sysname, avec NULL comme valeur par défaut. catalog est transmis comme propriété DBPROP_INIT_CATALOG pour initialiser le fournisseur OLE DB. Lorsque le serveur lié est défini sur une instance de SQL Server, le catalogue fait référence à la base de données par défaut sur laquelle le serveur lié est mappé.

0 (réussite) ou 1 (échec)

Le tableau suivant présente les façons dont un serveur lié peut être configuré pour des sources de données accessibles via OLE DB. Un serveur lié peut être configuré au moyen de plusieurs méthodes pour une même source de données ; il peut y avoir plusieurs lignes pour un type de source de données. Le tableau ci-dessous indique également les valeurs des paramètres de sp_addlinkedserver à utiliser pour configurer le serveur lié.

Source de données OLE DB distante

Fournisseur OLE DB

product_name

provider_name

data_source

Emplacement

provider_string

catalogue

SQL Server

Fournisseur Microsoft SQL Server Native Client OLE DB

SQL Server1 (par défaut)

 

 

 

 

 

SQL Server

Fournisseur Microsoft SQL Server Native Client OLE DB

 

SQLNCLI

Nom réseau de SQL Server (pour l'instance par défaut)

 

 

Nom de base de données (facultatif)

SQL Server

Fournisseur Microsoft SQL Server Native Client OLE DB

 

SQLNCLI

servername\instancename (pour une instance particulière)

 

 

Nom de base de données (facultatif)

Oracle, version 8 et ultérieure

Fournisseur Oracle pour OLE DB

ANY

OraOLEDB.Oracle

Alias de la base de données Oracle

 

 

 

Access/Jet

Fournisseur Microsoft OLE DB pour Jet

ANY

Microsoft.Jet.OLEDB.4.0

Nom d'accès complet du fichier de base de données Jet

 

 

 

Source de données ODBC

Fournisseur Microsoft OLE DB pour ODBC

ANY

MSDASQL

Système DSN de la source de données ODBC

 

 

 

Source de données ODBC

Fournisseur Microsoft OLE DB pour ODBC

ANY

MSDASQL

 

 

Chaîne de connexion ODBC

 

Système de fichiers

Fournisseur Microsoft OLE DB pour le service d'indexation

ANY

MSIDXS

Nom du catalogue du Service d'indexation

 

 

 

Feuille de calcul Microsoft Excel

Fournisseur Microsoft OLE DB pour Jet

ANY

Microsoft.Jet.OLEDB.4.0

Chemin complet du fichier Excel

 

Excel 5.0

 

Base de données IBM DB2

Fournisseur Microsoft OLE DB pour DB2

ANY

DB2OLEDB

 

 

Consultez le fournisseur Microsoft OLE DB pour la documentation DB2.

Nom de catalogue de base de données DB2

1 Cette méthode de configuration impose que le nom du serveur lié soit identique au nom réseau de l'instance de SQL Server distante. Utilisez data_source pour spécifier le serveur.

2 « Indifférent » signifie que le nom du produit n'a pas d'importance.

Le fournisseur Microsoft SQL Server Native Client OLE DB est le fournisseur utilisé avec SQL Server si aucun nom de fournisseur n'est spécifié ou si SQL Server est spécifié comme nom de produit. Même si vous spécifiez l'ancien nom du fournisseur, SQLOLEDB, il est remplacé par SQLNCLI lorsqu'il est persistant pour le catalogue.

Les paramètres data_source, location, provider_string et catalog identifient la ou les bases de données vers lesquelles pointe le serveur. Si un de ces paramètres a la valeur NULL, la propriété d'initialisation OLE DB correspondante n'est pas définie.

Dans un environnement ordonné en clusters, lorsque vous spécifiez des noms de fichiers qui pointent vers des sources de données OLE DB, utilisez le nom UNC (Universal Naming Convention) ou un lecteur partagé pour spécifier l'emplacement.

La procédure sp_addlinkedserver ne peut pas être exécutée dans une transaction définie par l'utilisateur.

Remarque relative à la sécurité Remarque relative à la sécurité

Lorsqu'un serveur lié est créé à l'aide de sp_addlinkedserver, un mappage automatique par défaut est ajouté pour toutes les connexions locales. Pour les fournisseurs non-SQL Server, les connexions SQL Server authentifiées peuvent accéder au fournisseur sous le compte de service SQL Server. Les administrateurs doivent envisager d'utiliser sp_droplinkedsrvlogin <linkedserver_name>, NULL pour supprimer le mappage global.

Nécessite l'autorisation ALTER ANY LINKED SERVER.

A.Utilisation du fournisseur Microsoft SQL Server Native Client OLE DB

Le code exemple suivant crée un serveur lié nommé SEATTLESales. Le nom du produit est SQL Server ; aucun nom de fournisseur n'est utilisé.

USE master;
GO
EXEC sp_addlinkedserver 
   N'SEATTLESales',
   N'SQL Server';
GO

Le code exemple suivant crée un serveur lié appelé S1_instance1 sur une instance de SQL Server à l'aide du fournisseur SQL Server Native Client OLE DB.

EXEC sp_addlinkedserver   
   @server=N'S1_instance1', 
   @srvproduct=N'',
   @provider=N'SQLNCLI', 
   @datasrc=N'S1\instance1';

B.Utilisation du fournisseur Microsoft OLE DB pour Microsoft Access

Le fournisseur Microsoft.Jet.OLEDB.4.0 se connecte aux bases de données Microsoft Access qui utilisent le format 2002-2003. L'exemple suivant crée un serveur lié nommé SEATTLE Mktg.

Remarque Remarque

L'exemple suivant suppose que Microsoft Access et la base de données exemple Northwind sont installés et que cette dernière se trouve dans C:\MSoffice\Access\Samples.

EXEC sp_addlinkedserver 
   @server = N'SEATTLE Mktg', 
   @provider = N'Microsoft.Jet.OLEDB.4.0', 
   @srvproduct = N'OLE DB Provider for Jet',
   @datasrc = N'C:\MSOffice\Access\Samples\Northwind.mdb';
GO

Le fournisseur Microsoft.ACE.OLEDB.12.0 se connecte aux bases de données Microsoft Access qui utilisent le format 2007. L'exemple suivant crée un serveur lié nommé SEATTLE Mktg.

RemarqueRemarque

L'exemple suivant suppose que Microsoft Access et la base de données exemple Northwind sont installés et que cette dernière se trouve dans C:\MSoffice\Access\Samples.

EXEC sp_addlinkedserver 
   @server = N'SEATTLE Mktg', 
   @provider = N'Microsoft.ACE.OLEDB.12.0', 
   @srvproduct = N'OLE DB Provider for ACE',
   @datasrc = N'C:\MSOffice\Access\Samples\Northwind.accdb';
GO

C.Utilisation du fournisseur Microsoft OLE DB pour ODBC avec le paramètre data_source

Le code exemple suivant crée un serveur lié nommé SEATTLE Payroll qui utilise le fournisseur Microsoft OLE DB pour ODBC (MSDASQL) et le paramètre data_source.

Remarque Remarque

Le nom de la source de données ODBC spécifiée doit être défini comme DSN système dans le serveur avant d'utiliser le serveur lié.

EXEC sp_addlinkedserver 
   @server = N'SEATTLE Payroll', 
   @srvproduct = N'',
   @provider = N'MSDASQL', 
   @datasrc = N'LocalServer';
GO

D.Utilisation du fournisseur Microsoft OLE DB pour une feuille de calcul Excel

Pour créer une définition de serveur lié utilisant le fournisseur Microsoft OLE DB pour Jet et accéder à une feuille de calcul Microsoft Excel au format 1997 - 2003, vous devez créer préalablement une plage nommée dans Excel. Vous devez pour cela, spécifier les colonnes et les lignes de la feuille de calcul à sélectionner. Le nom de la plage peut correspondre à un nom de table dans une requête distribuée.

EXEC sp_addlinkedserver 'ExcelSource',
   'Jet 4.0',
   'Microsoft.Jet.OLEDB.4.0',
   'c:\MyData\DistExcl.xls',
   NULL,
   'Excel 5.0';
GO

Pour accéder aux données d'une feuille de calcul Excel, associez une plage de cellules à un nom. La requête suivante peut s'utiliser pour accéder à la plage nommée SalesData en tant que table en utilisant le serveur lié défini précédemment.

SELECT *
   FROM ExcelSource...SalesData;
GO

Si SQL Server s'exécute sous un compte de domaine qui peut accéder à un partage distant, il est possible d'utiliser un chemin UNC à la place d'un lecteur mappé.

EXEC sp_addlinkedserver 'ExcelShare',
   'Jet 4.0',
   'Microsoft.Jet.OLEDB.4.0',
   '\\MyServer\MyShare\Spreadsheets\DistExcl.xls',
   NULL,
   'Excel 5.0';

Pour vous connecter à une feuille de calcul Excel au format Excel 2007, utilisez le fournisseur ACE.

EXEC sp_addlinkedserver @server = N'ExcelDataSource', 
@srvproduct=N'ExcelData', @provider=N'Microsoft.ACE.OLEDB.12.0', 
@datasrc=N'C:\DataFolder\People.xlsx',
@provstr=N'EXCEL 12.0' ;

E.Utilisation du fournisseur Microsoft OLE DB pour Jet pour accéder à un fichier texte

Le code exemple suivant crée un serveur lié pour accéder directement aux fichiers texte, sans lier les fichiers en tant que tables dans un fichier .mdb de Microsoft Access. Le fournisseur est Microsoft.Jet.OLEDB.4.0 ; la chaîne de caractères du fournisseur est Text.

La source de données est le chemin d'accès complet au répertoire qui contient les fichiers texte. Un fichier schema.ini, qui décrit la structure des fichiers texte, doit se trouver dans le même répertoire que les fichiers texte. Pour plus d'informations sur la création d'un fichier Schema.ini, consultez la documentation du moteur de base de données Jet.

--Create a linked server.
EXEC sp_addlinkedserver txtsrv, N'Jet 4.0', 
   N'Microsoft.Jet.OLEDB.4.0',
   N'c:\data\distqry',
   NULL,
   N'Text';
GO

--Set up login mappings.
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, Admin, NULL;
GO

--List the tables in the linked server.
EXEC sp_tables_ex txtsrv;
GO

--Query one of the tables: file1#txt
--using a four-part name. 
SELECT * 
FROM txtsrv...[file1#txt];

F.Utilisation du fournisseur Microsoft OLE DB pour DB2

Le code exemple suivant crée un serveur lié nommé DB2 qui utilise le Microsoft OLE DB Provider for DB2.

EXEC sp_addlinkedserver
   @server=N'DB2',
   @srvproduct=N'Microsoft OLE DB Provider for DB2',
   @catalog=N'DB2',
   @provider=N'DB2OLEDB',
   @provstr=N'Initial Catalog=PUBS;
       Data Source=DB2;
       HostCCSID=1252;
       Network Address=XYZ;
       Network Port=50000;
       Package Collection=admin;
       Default Schema=admin;';

G.Ajouter Base de données SQL Windows Azure en tant que serveur lié pour une utilisation avec des requêtes distribuées dans les bases de données du cloud et locales

Ajoutez Base de données SQL Windows Azure en tant que serveur lié, puis utilisez-le avec des requêtes distribuées qui couvrent les bases de données du cloud et locales. Il s'agit d'un composant pour les solutions hybrides de base de données couvrant les réseaux d'entreprise locaux et le cloud Windows Azure.

La boîte du produit SQL Server contient la fonctionnalité de requête distribuée, qui vous permet d'écrire des requêtes afin d'associer des données de sources locales et des données de sources distantes (y compris des données de sources de données autres que SQL Server) définies en tant que serveurs liés. Chaque Base de données SQL Windows Azure (sauf le maître virtuel) peut être ajoutée en tant que serveur lié individuel, puis être utilisée directement dans vos applications de base de données comme toute autre base de données.

Les avantages de l'utilisation de Base de données SQL Windows Azure sont la simplicité de gestion, la haute disponibilité, l'extensibilité, l'utilisation d'un modèle de développement familier et un modèle de données relationnelles. La configuration de votre application de base de données détermine le mode d'utilisation de Base de données SQL Windows Azure dans le cloud. Déplacez toutes les données à la fois vers Base de données SQL Windows Azure, ou déplacez progressivement certaines de vos données et conservez les autres localement. Pour cette application de base de données hybride, Base de données SQL Windows Azure peut maintenant être ajoutée en tant que serveurs liés et l'application de base de données peut publier des requêtes distribuées afin d'associer des données de Base de données SQL Windows Azure et de sources de données locales.

Voici un exemple simple expliquant comment se connecter à une Base de données SQL Windows Azure à l'aide de requêtes distribuées :

------ Configure the linked server
-- Add one Windows Azure SQL DB as Linked Server
EXEC sp_addlinkedserver
@server='myLinkedServer', -- here you can specify the name of the linked server
@srvproduct='',     
@provider='sqlncli', -- using SQL Server Native Client
@datasrc='myServer.database.windows.net',   -- add here your server name
@location='',
@provstr='',
@catalog='myDatabase'  -- add here your database name as initial catalog (you cannot connect to the master database)
-- Add credentials and options to this linked server
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'myLinkedServer',
@useself = 'false',
@rmtuser = 'myLogin',             -- add here your login on Azure DB
@rmtpassword = 'myPassword' -- add here your password on Azure DB
EXEC sp_serveroption 'myLinkedServer', 'rpc out', true;
------ Now you can use the linked server to execute 4-part queries
-- You can create a new table in the Azure DB
exec ('CREATE TABLE t1tutut2(col1 int not null CONSTRAINT PK_col1 PRIMARY KEY CLUSTERED (col1) )') at myLinkedServer
-- Insert data from your local SQL Server
exec ('INSERT INTO t1tutut2 VALUES(1),(2),(3)') at myLinkedServer

-- Query the data using 4-part names
select * from myLinkedServer.myDatabase.dbo.myTable

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft