Förstå SQL Server länkade servrar

av: Eric Blinn | Updated: 2019-06-28 | Comments (4) | Related: More> länkade servrar

Problem

Jag ser att det finns ett alternativ i SQL Server Management Studio (SSMS) för länkade servrar ochJag vill lära mig mer om vad de gör och hur de fungerar.

lösning

länkade servrar är en metod genom vilken en SQL Server kan prata med en annan ODBC compliantdatabase, till exempel en annan SQL Server-instans eller en Oracle-databas, med en directT-SQL-fråga.,

det finns flera viktiga inställningar att veta när du konfigurerar en länkad Server.Det här tipset täcker att skapa en länkad Server till en annan SQL Server-instans med SSMS GUI tillsammans med lämpliga säkerhetsalternativ. Det visar också hur man använderden länkade servern i en T-SQL-sats. Det finns agreat bibliotek med mer avancerade ämnen tillgängliga när grunderna har bemästrats.,

skapa en SQL Server länkad Server

i SQL Server Management Studio, i objektet Explorer rutan, expandera avsnittet ”ServerObjects”, högerklicka på ”Länkade servrar” och välj ”NewLinked Server…” från menyn.

Ny länkad server – Allmän sida

som visar en skärm som ser ut som skärmen nedan. Välj servertype som SQL Server och skriv in namnet på den andra instansen av SQL Server. I detta exempel kommer anslutningen att göras till en namngiven instans av SQL Server påsame-datorn., Detta är säkert tillåtet, men oftare är anslutningen gjordtill en annan maskin helt. Det länkade servernamnet anges som Theservername \ InstanceName. I exemplet nedan ansluter jag till localserver och instansnamnet är ”SECURITY_TEST”.

Ny länkad server – säkerhetssida

flytta sedan från den allmänna sidan till säkerhetssidan med menyn till vänster.På den här sidan kan administratören berätta för den här SQL-servern hur du autentiserar tillden andra instansen., Den övre halvan av skärmen gör det möjligt för enskilda inloggningar att varage tillgång att använda den länkade servern.

det finns 2 metoder för att autentisera användare. Den första är att välja en inloggning fördem att använda när du använder den länkade servern. I skärmdumpen nedan Eric användarhandboken kommer automatiskt att logga in på den sekundära servern som inloggningen LinkedServerTeston andra exempel. Denna referens lagras i SQL Server-motorn ochkrypteras. En andra raden, linkedservertest inloggning (en SQL-inloggning) Impersonatebox är markerad., Detta kommer att försöka använda samma användarnamn och lösenord på Linkedservern som den gjorde på den ursprungliga servern. Personifiering av en Windows-inloggning kan också göras, men kräver korrekt delegering inrättas.

fokusera nu på den nedre halvan av skärmen. Det finns 4 alternativ tillgängliga. Whicheveroption väljs här kommer att gälla för alla användare som inte anges i den övre delen.,

alternativ beskrivning
inte göras detta kommer att ge ett fel till alla användare som försöker använda den länkade Serversom inte finns i listan ovan. För att välja det här alternativet, därmåste vara minst 1 inloggning i den övre halvan av skärmen.
detta ärfelet alla andra användare kommer att få.
Msg 7416, nivå 16, stat 1,Linje 1
åtkomst till fjärrservern nekas eftersom ingen inloggning-mappingexists.,
göras utan att använda en säkerhet kontext detta kommer att skicka en anonym anslutning till den länkade servern och likelywon inte ge någon åtkomst till den sekundära servern.
göras med hjälp av inloggningens aktuella säkerhetssammanhang detta är detsamma som att placera varje enskild användare i den övre delen medimpersonate kryssrutan markerad.,
göras med hjälp av denna säkerhet sammanhang: det här alternativet kommer att kräva en inloggning och lösenord anges och kommer att fungerasamma som om varje enskild användare lades till den övre sektionen och givensamma användarnamn och lösenord. Det är den minst säkra metoden att installera en länkad Server som alla med någon tillgång till den första SQL Server kommer att kunna använda den länkade servern med hjälp av de sparade autentiseringsuppgifter.,

Ny länkad server – Server alternativ sida

det finns också inställningar på sidan alternativ, men för enkla frågor dessa inställningarkan lämnas som standardvärden som visas nedan.

inställningarna behöver inte ändras i de flesta användningsfall och tabellen willexplain vad inställningarna gör.

alternativ beskrivning
sortering kompatibel Standard är falskt., Detta kan ställas in till true om målservern använder exakt samma sortering som huvudservern. Changecan förbättra prestanda för vissa frågor genom att tillåta fjärr kolumn comperisonson text typ kolumner.
dataåtkomst Standard är sant. När falskt alla enskilda fjärrfrågeutförandearkommer att misslyckas. Denna inställning är oberoende av RPC Out. I ett scenariodär endast fjärrproceduranrop måste utföras kan den här inställningen vara falsk medan RPC Out förblir SANT.,
RPC/RPC Out detta står för Remote Procedure Call och låter dig köra storedprocedures på den länkade servern. RPC möjliggör fjärr ProcedureCalls från den angivna servern och RPC OUT möjliggör fjärr ProcedureCalls till den angivna servern.
använd Remote Collation/Collation Name Standard är falskt. När falskt kommer den lokala serverns sortering att varaanvänds på alla fjärrfrågor. När sant sorteringen av remoteserver kommer att användas på frågor., Om sant och fjärrservern inte är en SQLServer kan den lokala servern inte automatiskt slå upp rätt sorteringsvärde. I det här fallet använder du inställningen Sorteringsnamn för att skriva in theremote server collation.
anslutning Timeout Standard är 0. När icke-noll, detta är antalet sekunder towait innan timing ut när du ansluter till en länkad server. När 0 sedan thevalue faktiskt läses från en server standard som kan hittas genom runningthis kommando.

exec sp_configure 'remote login timeout (s)'
Query Timeout Standard är 0., När icke-noll, detta är antalet sekunder towait innan timing ut en fråga som körs mot en länkad server. När 0 dåvärdet faktiskt läses från en server standard som kan hittas genom att köra detta kommando.

exec sp_configure 'remote query timeout (s)'
distributör / Publisher / Subscriber dessa inställningar används endast när den länkade servern används för attstödja replikering.
Lazy Schema Validation Standard är falskt. När false kontrolleras schemat för en fjärrfrågaföre varje query execution., Eventuella ändringar i fjärrschemat ärupptäckta i förväg och en korrekt frågeplan kan återskapas till kontoför ändringen. När det är sant är schemat inte validerat fram till tidpunkten förutförande. Om ändringen i fjärrschemat gör frågeplanen ogiltigdet kommer att orsaka ett runtime-fel.
aktivera marknadsföring av distribuerade transaktioner Standard är sant. När aktiverad fjärrfråga som ändrar datakommer att åberopa DTC (Distributed Transaction Coordinator)., Denna processskyddar sådana frågor genom att tillåta båda servrarna att ha en delad transaktionsom antingen fullbordar 100% eller 0% – precis som en vanlig transaktion med en lokal fråga. När inaktiverad DTC inte anropas och en misslyckad remotequery kan misslyckas och inte helt rullas tillbaka.

Fråga Data över en SQL Server länkad Server

för att läsa data från en länkad Server måste alla tabeller eller vyer refereras till med hjälp av en 4-delsidentifierare bestående av det länkade servernamnet, databasnamnet, schemanamet och objektnamnet – i den ordningen.,

till exempel:

SELECT * FROM .master.sys.databasesSELECT * FROM .WideWorldImporters.Sales.Orders
  • först tillhandahålls det länkade servernamnet vilket är till exempel. I det här exemplet måste det delas på grund av dess format. Alla Linkedservernamn måste inte delas upp.
  • nästa är databasnamnet, master respektive Wideworldimportrar.
  • tredje är schemat namn, sys och försäljning respektive.
  • slutligen är objektnamnet listat. I dessa exempel är objekten databaseroch order.

det exemplet är ganska fult på grund av typen av det länkade servernamnet., Lyckligtvis visar detta bra tips hur man gör namnen enklare att läsa i scenarier somdetta.

en gång listad i en FROM-klausul kan dessa tabeller och vyer behandlas på exakt samma sätt som andra lokala tabeller. De kan frågas, Alias, sammanfogade ochom rätt behörigheter är inställda kan de ändras med hjälp av infoga, uppdatera och deletestatements.

anropa lagrade procedurer via en länkad Server

i denna demo skapades denna lilla procedur i masterdatabasen på mållänkad server.,

USE masterGOCREATE PROCEDURE dbo.SQLTips1 AS SELECT 'I was able to be called'; 

proceduren utförs sedan i den primära instansen med det här kommandot som följer samma 4-delsidentifieringsschema som uttalandena i föregående avsnitt.

EXEC .master.dbo.SQLTips1

i stället för det förväntade resultatet höjs dock ett fel.

RPC står för Remote Procedure Call. Som standard är länkade servrar anmärkningsvärda för att göra lagrade procedursamtal. Detta är lätt åtgärdas genom att aktivera asingle inställning på den länkade servern., Bläddra till de länkade serverns egenskaper, välj serveralternativ och 4thoption i listan kommer att vara RPC ut. Helt enkelt ändra det värdet till Sant och clickOK.

inställningen märkt RPC är inte det värde som behöver ändras. Dettakan verka förvirrande eftersom felmeddelandet verkar namnge det specifikt, men detär faktiskt en äldre inställning som inte aktiverar RPC-samtal.

omdirigering av proceduren ger nu ett mycket bättre resultat.,

SQL Server Linked Server Limitations

länkade servrar kan vara mycket användbara, men det finns några begränsningar som tobe medveten innan de implementeras. Länkade servrar kan inte användas för att anropa tabellvärderade eller skalära funktioner. Kommandot truncate får inte heller varakallas med en länkad Server.

SQL Server Linked Server Use Cases

prestandan hos länkade servrar är inte alltid bra, särskilt med largedata-uppsättningar och massor av kopplingar mellan lokala och länkade tabeller. Men de kan vara mycketanvändbart för att fråga mindre datauppsättningar.,

Ibland kan ett ETL-krav för en mindre datauppsättning uppfyllas med hjälp av en LinkedServer snarare än ett ETL-verktyg som SSIS. När raderna involverade nummer i tusentalseller lägre 10s tusentals kan en länkad serverbaserad ETL kunna slutföra oavbruten tid än det tar att starta SSIS-motorn.

nästa steg
  • Det finns en hel familj av avancerade länkade Servertips på mssqltips.,com
  • göra länkade servernamn lättare att läsa

Senast uppdaterad: 2019-06-28

om författaren
Eric Blinn är Sr.dataarkitekt för squire Patton Boggs. Han är också en SQL författare och passera lokal gruppledare.
Visa alla mina tips
relaterade resurser

  • fler SQL Server DBA Tips…

Leave a Comment