Länkade servrar (databasmotor)

gäller för:SQL ServerAzure SQL Managed Instance

Länkade servrar gör det möjligt för SQL Server Database Engine och Azure SQL Managed Instance att läsa data från fjärranslutna datakällor och köra kommandon mot fjärrdatabasservrar (till exempel OLE DB-datakällor) utanför SQL Server-instansen. Vanligtvis konfigurerar du länkade servrar så att databasmotorn kan köra en Transact-SQL-instruktion som innehåller tabeller i en annan instans av SQL Server eller någon annan databasprodukt som Oracle. Du kan konfigurera många typer av OLE DB-datakällor som länkade servrar, inklusive databasprovidrar från tredje part och Azure Cosmos DB.

Anmärkning

Länkade servrar är tillgängliga i SQL Server och Azure SQL Managed Instance (med vissa begränsningar). Länkade servrar är inte tillgängliga i Azure SQL Database.

När ska jag använda länkade servrar?

Med länkade servrar kan du implementera distribuerade databaser som kan hämta och uppdatera data i andra databaser. Använd länkade servrar i scenarier där du behöver implementera databas horisontell partitionering utan att skapa anpassad programkod eller direkt inläsning från fjärranslutna datakällor. Länkade servrar har följande fördelar:

  • Möjligheten att komma åt data utanför SQL Server.

  • Möjligheten att utfärda distribuerade frågor, uppdateringar, kommandon och transaktioner på heterogena datakällor i företaget.

  • Möjligheten att hantera olika datakällor på samma sätt.

Du kan konfigurera en länkad server med hjälp av SQL Server Management Studio eller med hjälp av instruktionen sp_addlinkedserver . OLE DB-providrar varierar kraftigt i vilken typ och antal parametrar som krävs. Vissa leverantörer kräver till exempel att du anger en säkerhetskontext för anslutningen med hjälp av sp_addlinkedsrvlogin. Vissa OLE DB-leverantörer tillåter att SQL Server uppdaterar data på OLE DB-källan. Andra tillhandahåller endast skrivskyddad dataåtkomst. Information om varje OLE DB-provider finns i dokumentationen för den OLE DB-providern.

Länkade serverkomponenter

En länkad serverdefinition anger följande objekt:

  • En OLE DB-leverantör

  • En OLE DB-datakälla

En OLE DB-provider är en DLL som hanterar och interagerar med en specifik datakälla. En OLE DB-datakälla identifierar den specifika databas som du kan komma åt via OLE DB. Även om datakällor som efterfrågas via länkade serverdefinitioner vanligtvis är databaser, finns OLE DB-leverantörer för olika filer och filformat. Dessa filer omfattar oformaterad text, kalkylbladsdata och resultatet av innehållssökningar i fulltext.

Från och med SQL Server 2019 (15.x) är Microsoft OLE DB-drivrutinen för SQL Server (PROGID: MSOLEDBSQL) standardprovidern för OLE DB. I tidigare versioner var DEN interna SQL Server-klienten (PROGID: SQLNCLI11) standardprovidern för OLE DB.

Viktigt!

Den interna SQL Server-klienten (ofta förkortad SNAC) har tagits bort från SQL Server 2022 (16.x) och SQL Server Management Studio 19 (SSMS). Både SQL Server Native Client OLE DB-providern (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny utveckling. Växla till den nya Microsoft OLE DB Driver (MSOLEDBSQL) för SQL Server framöver.

Microsoft har endast stöd för länkade servrar till Excel- och Access-källor när du använder 32-bitars Microsoft.JET.OLEDB.4.0 OLE DB-providern.

Anmärkning

SQL Server-distribuerade frågor fungerar med alla OLE DB-leverantörer som implementerar nödvändiga OLE DB-gränssnitt. SQL Server har dock testats mot STANDARD-OLE DB-providern.

Information om länkad server

Följande bild visar grunderna i en länkad serverkonfiguration.

Diagram som visar klientnivå, servernivå och databasservernivå.

Vanligtvis använder du länkade servrar för att hantera distribuerade frågor. När ett klientprogram kör en distribuerad fråga via en länkad server parsar SQL Server kommandot och skickar begäranden till OLE DB. Radsuppsättningsförfrågan kan utföras genom att köra en fråga mot providern eller öppna en bastabell från providern.

För att en datakälla ska kunna returnera data via en länkad server måste OLE DB-providern (DLL) för den datakällan finnas på samma server som SQL Server-instansen.

Länkade servrar stöder Direktautentisering i Active Directory när du använder fullständig delegering. Från och med SQL Server 2017 (14.x) CU17 stöds även direktautentisering med begränsad delegering. Men resursbaserad begränsad delegering stöds inte.

Viktigt!

När du använder en OLE DB-provider måste kontot som SQL Server-tjänsten körs under ha läs- och körningsbehörigheter för katalogen och alla underkataloger där providern är installerad. Detta krav gäller för Microsoft-frisläppna leverantörer och tredjepartsleverantörer.

Hantera leverantörer

Det finns en uppsättning alternativ som styr hur SQL Server läser in och använder OLE DB-providers som anges i registret.

Hantera länkade serverdefinitioner

När du konfigurerar en länkad server registrerar du anslutningsinformationen och datakällsinformationen med SQL Server. När den har registrerats kan du referera till datakällan med ett enda logiskt namn.

Använd lagrade procedurer och katalogvyer för att hantera länkade serverdefinitioner:

  • Skapa en länkad serverdefinition genom att köra sp_addlinkedserver.

  • Visa information om de länkade servrar som definierats i en specifik instans av SQL Server genom att köra en fråga mot sys.servers systemkatalogvyn.

  • Ta bort en länkad serverdefinition genom att köra sp_dropserver. Du kan också använda den här lagrade proceduren för att ta bort en fjärrserver.

Du kan också definiera länkade servrar med hjälp av SQL Server Management Studio. Högerklicka på Serverobjekt i Object Explorer, välj Nytt och välj Länkad server. Du kan ta bort en länkad serverdefinition genom att högerklicka på det länkade servernamnet och välja Ta bort.

När du kör en distribuerad fråga mot en länkad server ska du inkludera ett fullständigt kvalificerat tabellnamn i fyra delar som varje datakälla ska köra frågor mot. Det här fyradelade namnet ska vara i formuläret <linked_server_name>.<catalog>.<schema>.<object_name>.

Referenser till tillfälliga objekt matchar alltid den lokala instansens tempdb när det är tillämpligt, även när prefixet med det länkade servernamnet används.

Du kan definiera länkade servrar för att peka tillbaka (loopa tillbaka) till den server där du definierar dem. Loopback-servrar är mest användbara när du testar ett program som använder distribuerade frågor i ett enda servernätverk. Loopback-länkade servrar är avsedda för testning och stöds inte för många åtgärder, till exempel distribuerade transaktioner.

Länkade servrar med Azure SQL Managed Instance

Länkade Azure SQL Managed Instance-servrar stöder både SQL-autentisering och autentisering med Microsoft Entra-ID.

Om du vill använda SQL Agent-jobb på Azure SQL Managed Instance för att utföra en fråga mot en fjärrserver via en länkad server, använder du sp_addlinkedsrvlogin för att skapa en mappning från en inloggning på den lokala servern till en inloggning på fjärrservern. När SQL Agent-jobbet ansluter till fjärrservern via den länkade servern körs T-SQL-frågan i kontexten för fjärrinloggningen. Mer information finns i SQL Agent-jobb med Azure SQL Managed Instance.

Microsoft Entra-autentisering

Två stödda Microsoft Entra-autentiseringslägen är: hanterad identitet och vidarebefordran. Använd hanterad identitetsautentisering för att tillåta lokala inloggningar att fråga fjärrlänkade servrar. Använd direktautentisering för att tillåta att en huvudkomponent som kan autentisera sig mot en lokal instans får tillgång till en fjärrinstans via en länkad server.

Om du vill använda Microsoft Entra-direktautentisering för en länkad server i Azure SQL Managed Instance behöver du följande krav:

  • Samma huvudnamn läggs till som en inloggning på fjärrservern.
  • Båda instanserna är medlemmar i SQL-förtroendegruppen.

Anmärkning

Befintliga definitioner av länkade servrar som du har konfigurerat för direktströmningsläge stöder Microsoft Entra-autentisering. Det enda kravet är att lägga till SQL Managed Instance i serverförtroendegruppen.

Följande begränsningar gäller för Microsoft Entra-autentisering för länkade servrar i Azure SQL Managed Instance:

  • Microsoft Entra-autentisering stöds inte för SQL-hanterade instanser i olika Microsoft Entra-klienter.
  • Microsoft Entra-autentisering för länkade servrar stöds endast med OLE DB-drivrutinsversion 18.2.1 och senare.

SQL Server 2025 och MSOLEDBSQL version 19

Från och med SQL Server 2025 (17.x) använder MSOLEDBSQL-providern Microsoft OLE DB Driver 19 som standard. Den här uppdaterade drivrutinen introducerar betydande säkerhetsförbättringar, inklusive stöd för TDS 8.0 och TLS 1.3.

TDS 8.0 förbättrar säkerheten genom att lägga till ett nytt krypteringsalternativ och introducerar en icke-bakåtkompatibel ändring: parametern Encryption är inte längre valfri. Du måste ange den i anslutningssträngen när du riktar in dig på en annan SQL Server-instans.

Anmärkning

Utan parametern Encrypt är länkade servrar i SQL Server 2025 (17.x) standard till Encrypt=Mandatory och kräver ett giltigt certifikat. Anslutningar utan ett giltigt certifikat misslyckas.

Parametern Encryption erbjuder tre distinkta inställningar:

  • Yes, eller True, eller Mandatory
  • No, eller False, eller Optional
  • Strict

Alternativet Strict kräver användning av TDS 8.0 och kräver ett servercertifikat för säkra anslutningar. För Yes/True/Mandatoryförväntas ett betrott certifikat. Du kan inte använda ett självsignerat certifikat.

OLE DB-version Krypteringsparameter Möjliga värden Standardvärde
OLE DB 18 Valfri True eller Mandatory, False eller No No
OLE DB 19 Obligatoriskt No eller False, Yes eller Mandatory, Strict (ny) Yes

Parametern TrustServerCertificate stöds, men rekommenderas inte. Om du anger FörtroendeservercertifikatYes inaktiveras certifikatverifieringen, vilket försvagar säkerheten för krypterade anslutningar. Om du vill använda förtroendeservercertifikatet måste klienten också aktivera det i datorregistret. Information om hur du aktiverar förtroendeservercertifikat finns i Registerinställningar. Inställningen TrustServerCertificate=Yes rekommenderas inte för produktionsmiljöer.

När du använder Encrypt=False eller Encrypt=Optional:

  • Inget certifikat krävs.
  • Om ett betrott certifikat tillhandahålls verifierar inte drivrutinen det.
  • Anslutningen tillhandahåller ingen kryptering.

När du använder Encrypt=True eller Encrypt=Mandatory, och inte använder TrustServerCertificate=Yes:

  • Anslutningen kräver ett giltigt CA-signerat certifikat.
  • Certifikatet måste matcha serverns fullständiga domännamn.
  • Om det alternativa namnet i certifikatet skiljer sig från SQL Server-värdnamnet måste det HostNameInCertificate anges till FQDN.
  • Certifikatet måste installeras i arkivet Betrodda rotcertifikatutfärdare på klientdatorn.

När du använder Encrypt=Strict:

  • Anslutningen framtvingar TDS 8.0.
  • Anslutningen kräver ett giltigt CA-signerat certifikat med FQDN-matchning.
  • HostNameInCertificate måste anges till FQDN.
  • Certifikatet måste vara betrott av klientsystemet.
  • TrustServerCertificate konfiguration stöds inte. Ett giltigt certifikat måste finnas.
Klientinställning för betrodd servercertifikat Anslutningssträng/anslutningsattribut Certifikat för förtroendeserver Certifikatverifiering
0 No (standardinställning) Ja
0 Yes Ja
1 No (standardinställning) Ja
1 Yes Nej

Du måste ange de här inställningarna i anslutningssträngen när du konfigurerar länkade serveranslutningar för att säkerställa kompatibilitet och säkerhet med den nya drivrutinen.

Uppdatera från tidigare OLEDB-versioner

Gäller för: SQL Server 2025 (17.x) och senare versioner

När du migrerar från tidigare versioner av SQL Server till SQL Server 2025 (17.x) med Microsoft OLE DB Driver 19 kan befintliga länkade serverkonfigurationer misslyckas. Olika standardvärden för krypteringsparametern kan orsaka det här felet om du inte anger ett giltigt certifikat.

Du kan också återskapa den länkade servern och inkludera Encrypt=Optional den i anslutningssträngen. Om du inte kan ändra konfigurationen för den länkade servern aktiverar du spårningsflaggan 17600 för att upprätthålla OLE DB 18-beteende och standardvärden.

I guiden Skapa länkad server i SQL Server Management Studio (SSMS) använder du alternativet Andra datakällor för att manuellt konfigurera alternativen för länkad serverkryptering.

Mer information om OLE DB 19 och kryptering, certifikat och förtroendeservercertifikat för OLE DB 19 finns i Kryptering och certifikatverifiering i OLE DB.