sp_addlinkedserver (Transact-SQL)
Tworzy serwer połączony.serwer połączony umożliwia dostęp do rozproszonych, heterogenicznych kwerend aktualizujących źródeł danych OLE DB .Po utworzeniu za pomocą serwer połączony sp_addlinkedserverrozproszonych kwerendy mogą być uruchamiane na tym serwerze.Jeśli serwer połączony jest zdefiniowana jako wystąpienie SQL Server, mogą być wykonywane zdalnych procedur przechowywanych.
Składnia
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
Argumenty
[ @server= ] 'server'
Jest nazwą serwer połączony , aby utworzyć.serverjest sysname, z braku domyślne.[ @srvproduct= ] 'product_name'
Jest to nazwa produktu źródło danych OLE DB dodać rolę serwer połączony.product_namejest nvarchar(128), domyślna wartość NULL.If SQL Server, provider_name, data_source, location, provider_string, and catalog do not have to be specified.[ @dostawca= ] 'provider_name'
Jest unikatowych identyfikatorów programowych (PROGID)dostawca OLE DB, odpowiadający tego źródłodanych. provider_namemusi być unikatowa dla określonego OLE DB dostawca zainstalowane na danym komputerze.provider_namejest nvarchar(128), z domyślnej NULL; Jednakże jeśli provider_name jest pominięty, SQLNCLI jest używana.(Użyj SQLNCLI i SQL Server nastąpi przekierowanie do najnowszej wersja programu SQL Server macierzystego klienta dostawcy OLE DB .) OLE DB dostawca oczekuje zarejestrowane z określonym identyfikatorem PROGID w rejestrze.[ @datasrc= ] 'data_source'
Jest nazwą źródło danych, zgodnie z interpretacją OLE DB dostawca.data_sourceis nvarchar(4000).data_sourcejest przekazywana jako DBPROP_INIT_DATASOURCE właściwość zainicjowaćdostawcaOLE DB.[ @location= ] 'location'
Lokalizację bazy danych jest interpretowany przez OLE DB dostawca.locationjest nvarchar(4000), domyślna wartość NULL.locationjest przekazywana jako DBPROP_INIT_LOCATION właściwość zainicjowaćdostawcaOLE DB.[ @provstr= ] 'provider_string'
OLE DB dostawca-określonych parametry połączenia , który identyfikuje unikatowy danych źródło.provider_stringjest nvarchar(4000), domyślna wartość NULL.provstrjest albo przekazywany do IDataInitialize lub zestaw jako DBPROP_INIT_PROVIDERSTRING właściwość , aby zainicjowaćdostawcaOLE DB.Podczas tworzenia serwer połączony przeciwko SQL Server macierzystego klienta OLE DB dostawca wystąpienie można określić przy użyciu słowa kluczowego serwera jako serwera =servername\instancename do określenia konkretnego wystąpienie z SQL Server.servernamejest nazwą komputera, na którym SQL Server jest uruchomiony i instancename jest nazwą konkretne wystąpienie SQL Server , do której użytkownik będzie połączony.
Ostrzeżenie
Dostęp dublowanego bazy danych, do parametry połączenia musi zawierać nazwę bazy danych.Ta nazwa jest niezbędne w celu umożliwienia prób zainicjowania pracy awaryjnej przez dostępu do danych dostawca.Baza danych może być określony w @ provstr lub @ catalog parametru.Opcjonalnie parametry połączenia można również podać nazwę partner pracy awaryjnej.Aby uzyskać więcej informacji, zobacz Nawiązywania połączenia początkowego bazą dublowanie sesji.
[ @catalog= ] 'catalog'
Jest używane, gdy połączenie OLE DB dostawca.catalogjest sysname, domyślna wartość NULL.catalogjest przekazywana jako DBPROP_INIT_CATALOG właściwość zainicjowaćdostawcaOLE DB. Kiedy serwer połączony jest zdefiniowany przed wystąpienie SQL Server, wykaz odwołuje się do domyślna baza danych , na który jest mapowany na serwer połączony .
Wartości kodów powrotnych
0 (sukces) lub 1 (błąd)
Zestawy wyników
Brak.
Uwagi
W poniższej tabela przedstawiono sposoby, że serwer połączony może być zestaw dla źródeł danych, które mogą być udostępniane za pośrednictwem OLE DB.serwer połączony można zestaw więcej niż jeden sposób danych źródło; może istnieć więcej niż jeden wiersz dla typu źródło danych.W tabela przedstawiono również sp_addlinkedserver wartości parametrów do konfigurowania serwer połączony.
Zdalny danych OLE DB źródło |
OLE DB dostawca |
product_name |
provider_name |
data_source |
Lokalizacja |
provider_string |
katalog |
---|---|---|---|---|---|---|---|
SQL Server |
Microsoft SQL ServerDostawca OLE DB klienta macierzystego |
SQL Server1 (wartość domyślna) |
|
|
|
|
|
SQL Server |
Microsoft SQL ServerDostawca OLE DB klienta macierzystego |
|
SQLNCLI |
Nazwa sieciowa SQL Server (dla wystąpienie domyślne) |
|
|
Nazwa bazy danych (opcjonalnie) |
SQL Server |
Microsoft SQL ServerDostawca OLE DB klienta macierzystego |
|
SQLNCLI |
nazwa_serwera\nazwa_wystąpienia (dla konkretnego wystąpienie) |
|
|
Nazwa bazy danych (opcjonalnie) |
Oracle |
MicrosoftOLE DB Provider for Oracle |
Any2 |
MSDAORA |
SQL* Net alias dla bazy danych Oracle |
|
|
|
Oracle wersja 8 i nowszych |
Oracle Provider dla OLE DB |
Dowolne |
OraOLEDB.Oracle |
Alias bazy danych Oracle |
|
|
|
Dostęp i Jet |
Microsoft OLE DB Provider for Jet |
Dowolne |
Microsoft.Jet.OLEDB.4.0 |
Pełna ścieżka Jet plik bazy danych |
|
|
|
źródło danych ODBC |
Dostawca Microsoft OLE DB dla ODBC |
Dowolne |
MSDASQL |
Systemowe DSN danych źródłoODBC |
|
|
|
źródło danych ODBC |
MicrosoftDostawca OLE DB dla ODBC |
Dowolne |
MSDASQL |
|
|
ODBC parametry połączenia |
|
System plików |
MicrosoftDostawca OLE DB dla usługi indeksowania |
Dowolne |
MSIDXS |
Nazwa katalogu usługi indeksowania |
|
|
|
MicrosoftArkusz kalkulacyjny programu Excel |
MicrosoftOLE DB Provider for Jet |
Dowolne |
Microsoft.Jet.OLEDB.4.0 |
Pełna ścieżka pliku programu Excel |
|
Excel 5,0 |
|
Baza danych IBM DB2 |
MicrosoftDostawca OLE DB dla DB2 |
Dowolne |
DB2OLEDB |
|
|
Zobacz Microsoft dostawcy OLE DB dla DB2 dokumentacji. |
Nazwa katalogu bazy danych DB2 |
1 w ten sposób konfigurowania serwer połączony wymusza nazwy serwer połączony jest taka sama jak nazwa sieci zdalnej wystąpienie SQL Server.Użycie data_source do określenia serwera.
2 "Dowolny" wskazuje nazwę produktu może być cokolwiek.
Microsoft SQL Server Macierzystego klienta OLE DBdostawca jest dostawca , który jest używany z SQL Server , jeśli nie określono żadnej nazwy dostawca lub SQL Server jest określona jako nazwa produktu.Nawet jeśli określony starsza nazwa dostawca SQLOLEDB, zostanie zmieniony na SQLNCLI, gdy trwała do wykazu.
data_source, location, provider_string, I catalog Parametry zidentyfikować bazy danych lub baz danych serwer połączony wskazuje.Jeśli którykolwiek z tych parametrów jest NULL, Inicjowanie OLE DB właściwość nie jest zestaw.
W środowisku klastrowym podczas określania nazwy plików do źródła danych OLE DB pkt użyć nazwę uniwersalnej konwencja nazewnictwa (UNC) lub dysku udostępnionego do określenia lokalizacji.
sp_addlinkedserver nie można wykonać w ramach transakcji zdefiniowanej przez użytkownika.
Uwaga dotycząca zabezpieczeń |
---|
Podczas tworzenia serwer połączony za pomocą sp_addlinkedserver, self-mapping domyślną jest dodawane dla wszystkich identyfikatorów logowania lokalnego.Dla nie-SQL Server dostawców, SQL Server uwierzytelniony logowania może być w stanie do uzyskania dostępu do dostawca w SQL Serverkontausługa . Administratorzy powinni korzystać z sp_droplinkedsrvlogin <linkedserver_name>, NULL , aby usunąć mapowanie globalne. |
Uprawnienia
Wymaga uprawnień zmianę dowolnego serwera POŁĄCZONEGO.
Przykłady
A.Za pomocą Microsoft SQL Server macierzystego dostawcy OLE DB klienta
Poniższy przykład tworzy serwer połączony o nazwie SEATTLESales.Nazwa produktu jest SQL Server, i nazwa dostawca nie jest używany.
USE master;
GO
EXEC sp_addlinkedserver
N'SEATTLESales',
N'SQL Server';
GO
Poniższy przykład tworzy serwer połączony S1_instance1 na wystąpienie SQL Server za pomocą SQL Server macierzystego klienta OLE DB dostawca.
EXEC sp_addlinkedserver
@server=N'S1_instance1',
@srvproduct=N'',
@provider=N'SQLNCLI',
@datasrc=N'S1\instance1';
B.Za pomocą dostawcy Microsoft OLE DB dla programu Microsoft Access
Microsoft.Jet.OLEDB.4.0 dostawca łączy baz danych programu Microsoft Access, które używają formatu 2002-2003.Poniższy przykład tworzy serwer połączony o nazwie SEATTLE Mktg.
Ostrzeżenie
W tym przykładzie zakłada się, że oba Microsoft dostępu i próbki Northwind bazy danych są zainstalowane i że Northwind baza danych znajduje się w 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
Microsoft.ACE.OLEDB.12.0 dostawca łączy baz danych programu Microsoft Access, które używają formatu 2007.Poniższy przykład tworzy serwer połączony o nazwie SEATTLE Mktg.
Ostrzeżenie
W tym przykładzie zakłada się, że oba Microsoft dostępu i próbki Northwind bazy danych są zainstalowane i że Northwind baza danych znajduje się w 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
Za pomocą dostawcy Microsoft OLE DB dla programu Oracle
The following example creates a linked server named LONDON Mktg that uses the Microsoft OLE DB Provider for Oracle and assumes that the SQL*Net alias for the Oracle database is MyServer.
EXEC sp_addlinkedserver
@server = N'LONDON Mktg',
@srvproduct = N'Oracle',
@provider = N'MSDAORA',
@datasrc = N'MyServer';
GO
D.Za pomocą dostawcy Microsoft OLE DB dla ODBC z parametrem data_source
Poniższy przykład tworzy serwer połączony o nazwie SEATTLE Payroll używający Microsoft dostawcy OLE DB dla ODBC (MSDASQL) i data_source parametru.
Ostrzeżenie
Przed użyciem serwer połączony, określonej nazwy źródło danych ODBC musi być zdefiniowany jako systemowe DSN na serwerze.
EXEC sp_addlinkedserver
@server = N'SEATTLE Payroll',
@srvproduct = N'',
@provider = N'MSDASQL',
@datasrc = N'LocalServer';
GO
E.Przy użyciu dostawcy Microsoft OLE DB dla arkusza kalkulacyjnego programu Excel
Utworzenie definicji serwer połączony za pomocą Microsoft OLE DB Provider for Jet dostęp do arkusza kalkulacyjnego programu Excel w formacie 1997-2003, najpierw należy utworzyć nazwany zakres w programie Excel przez określenie kolumn i wierszy arkusza programu Excel, aby wybrać.Nazwa zakres mogą następnie odwoływać się jako nazwę tabela , w zapytanie rozproszone.
EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls',
NULL,
'Excel 5.0';
GO
Dostęp do danych z arkusza kalkulacyjnego programu Excel, należy skojarzyć z nazwę zakres komórek.Można użyć następującej kwerendy określonego nazwanego zakresdostępu doSalesData jako tabela przy użyciu serwer połączonyzestaw w górę poprzednio.
SELECT *
FROM ExcelSource...SalesData;
GO
Jeśli SQL Server jest uruchomiona przy użyciu konta domena , które ma dostęp do udziału zdalnego, ścieżka UNC mogą być używane zamiast zmapowanego dysku.
EXEC sp_addlinkedserver 'ExcelShare',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'\\MyServer\MyShare\Spreadsheets\DistExcl.xls',
NULL,
'Excel 5.0';
Aby połączyć się z programu Excel arkusza kalkulacyjnego w formacie programu Excel 2007 użyć ACE dostawca.
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' ;
F.Aby uzyskać dostęp do pliku tekstowego za pomocą Microsoft OLE DB Provider for Jet
Poniższy przykład tworzy serwer połączony na bezpośredni dostęp do plików tekstowych, bez łączenia plików jako tabele w pliku MDB programu Access.dostawca jest Microsoft.Jet.OLEDB.4.0 i dostawcaciąg jest Text.
źródło danych jest pełna ścieżka katalogu, zawierającego pliki tekstowe.Plik schema.ini opisuje strukturę plików tekstowych, musi istnieć w tym samym katalogu co pliki tekstowe.Aby uzyskać więcej informacji na temat tworzenia pliku Schema.ini dokumentacji aparatu bazy danych 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];
G.Za pomocą dostawcy Microsoft OLE DB dla DB2
Poniższy przykład tworzy serwer połączony o nazwie DB2 używający 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;';
Zobacz także