sp_addlinkedserver (Transact-SQL)
Mis à jour : 12 décembre 2006
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, des procédures stockées distantes peuvent être exécutées.
Conventions de syntaxe Transact-SQL
Syntaxe
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
Arguments
- [ @server= ] 'server'
Nom du serveur lié à créer. L'argument server est de type sysname, sans 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). Sa valeur par défaut est NULL. 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é. SQLNCLI est le fournisseur de SQL Native Client OLE DB. Le fournisseur OLE DB doit être inscrit dans le Registre avec le PROGID spécifié.
- [ @datasrc= ] 'data_source'
Nom de la source de données interprétée 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 interprété par le fournisseur OLE DB. location est de type nvarchar(4000). Sa valeur par défaut est NULL. location est passé 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). Sa valeur par défaut est NULL. provstr est passé à 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 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 spécifique. 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 : 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. Pour plus d'informations, consultez Établissement de la connexion initiale à une session de mise en miroir de bases de données.
- [ @catalog= ] 'catalog'
Catalogue à utiliser lors de l'établissement d'une connexion au fournisseur OLE DB. catalog est de type sysname Sa valeur par défaut est NULL. catalog est passé 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é.
Notes
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 Native Client OLE DB |
SQL Server 1 (par défaut) |
|
|
|
|
|
SQL Server |
Fournisseur Microsoft SQL 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 Native Client OLE DB |
|
SQLNCLI |
servername\instancename (pour une instance particulière) |
|
|
Nom de base de données (facultatif) |
Oracle |
Microsoft OLE DB Provider pour Oracle |
Indifférent2 |
MSDAORA |
Alias SQL*Net pour base de données Oracle |
|
|
|
Oracle, version 8 et ultérieure |
Fournisseur Oracle pour OLE DB |
Indifférent |
OraOLEDB.Oracle |
Alias de la base de données Oracle |
|
|
|
Access/Jet |
Fournisseur Microsoft OLE DB pour Jet |
Indifférent |
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 |
Indifférent |
MSDASQL |
Système DSN de la source de données ODBC |
|
|
|
Source de données ODBC |
Fournisseur Microsoft OLE DB pour ODBC |
Indifférent |
MSDASQL |
|
|
Chaîne de connexion ODBC |
|
Système de fichiers |
Fournisseur Microsoft OLE DB pour le Service d'indexation |
Indifférent |
MSIDXS |
Nom du catalogue du Service d'indexation |
|
|
|
Feuilles de calcul Microsoft Excel |
Fournisseur Microsoft OLE DB pour Jet |
Indifférent |
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 |
Indifférent |
DB2OLEDB |
|
|
Voir 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 Native Client OLE DB (SQLNCLI) est le fournisseur utilisé avec SQL Server 2005 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é : |
---|
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. |
Autorisations
Nécessite l'autorisation ALTER ANY LINKED SERVER.
Valeurs du code de retour
0 (succès) ou 1 (échec)
Ensembles de résultats
Aucun.
Exemples
A. Utilisation du fournisseur Microsoft SQL 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
'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 Microsoft SQL Native Client OLE DB (SQLNCLI
).
EXEC sp_addlinkedserver
@server='S1_instance1',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='S1\instance1'
B. Utilisation du fournisseur Microsoft OLE DB pour Jet
Le code exemple suivant crée un serveur lié nommé SEATTLE Mktg
.
Remarque : |
---|
Le code 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 = 'SEATTLE Mktg',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'
GO
C. Utilisation du fournisseur Microsoft OLE DB pour Oracle
Le code exemple suivant crée un serveur lié nommé LONDON Mktg
qui utilise le fournisseur Microsoft OLE DB pour Oracle. On suppose que l'alias SQL*Net pour la base de données Oracle est MyServer
.
EXEC sp_addlinkedserver
@server = 'LONDON Mktg',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'
GO
D. 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 : |
---|
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 = 'SEATTLE Payroll',
@srvproduct = '',
@provider = 'MSDASQL',
@datasrc = 'LocalServer'
GO
E. Utilisation du fournisseur Microsoft OLE DB pour Jet dans une feuille de calcul Microsoft 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, 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'
F. 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, 'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\data\distqry',
NULL,
'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]
G. 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='DB2',
@srvproduct='Microsoft OLE DB Provider for DB2',
@catalog='DB2',
@provider='DB2OLEDB',
@provstr='Initial Catalog=PUBS;
Data Source=DB2;
HostCCSID=1252;
Network Address=XYZ;
Network Port=50000;
Package Collection=admin;
Default Schema=admin;'
Voir aussi
Référence
Procédures stockées de requêtes distribuées (Transact-SQL)
sp_addlinkedsrvlogin (Transact-SQL)
sp_addserver (Transact-SQL)
sp_dropserver (Transact-SQL)
sp_serveroption (Transact-SQL)
sp_setnetname (Transact-SQL)
Procédures stockées système (Transact-SQL)
Tables système (Transact-SQL)
Autres ressources
Configuration des serveurs liés pour la délégation
Fournisseurs OLE DB testés avec SQL Server
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Libération | Historique |
---|---|
12 décembre 2006 |
|