Dela via


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ärrdatakällorna och köra kommandon mot fjärrdatabasservrarna (till exempel OLE DB-datakällor) utanför SQL Server-instansen. Vanligtvis är länkade servrar konfigurerade för att göra det möjligt för databasmotorn att köra en Transact-SQL-instruktion som innehåller tabeller i en annan instans av SQL Server eller någon annan databasprodukt som Oracle. Många typer av OLE DB-datakällor kan konfigureras 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. Länkade servrar är en bra lösning i scenarier där du behöver implementera databassharding utan att behöva skapa en anpassad programkod eller läsa in direkt 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 kan nås 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 inkluderar textfiler, 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.

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

Anmärkning

DISTRIBUERAde SQL Server-frågor är utformade för att fungera med alla OLE DB-leverantörer som implementerar de nödvändiga OLE DB-gränssnitten. 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änds 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 en OLE DB-provider används 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 inkluderar Microsoft-utgivna leverantörer och alla 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 datakällan har registrerats kan den refereras till med ett enda logiskt namn.

Du kan använda 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 Objektutforskaren, 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 kommer alltid att lösas till den lokala instansens tempdb där det är tillämpligt, även när det länkade servernamnet används som prefix.

Länkade servrar kan definieras för att peka tillbaka (loopa tillbaka) till den server där de definieras. 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 (tidigare Azure Active Directory).

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. Hanterad identitetsautentisering kan användas för att tillåta lokala inloggningar att fråga fjärrlänkade servrar. Med pass-through-autentisering kan en användare som har autentiserats mot en lokal instans få åtkomst 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 har konfigurerats för direktströmningsläge stöder Microsoft Entra-autentisering. Det enda kravet för detta ä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 förhandsversionen av 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. Den måste anges 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) förhandsversionen standard och Encrypt=Mandatory 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 verifieras det inte.
  • Tillhandahåller ingen anslutningskryptering.

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

  • 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:

  • Framtvingar TDS 8.0.
  • 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. Det innebär att 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

De här inställningarna måste anges korrekt 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: Förhandsversion av 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) Förhandsversion 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 inte ett giltigt certifikat har angetts.

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 Managed Studio (SSMS) måste alternativet Andra datakällor användas 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.