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.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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ń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;';