Forståelse SQL Server Linkede Servere,

Af: Eric Blinn | Opdateret: 2019-06-28 | Kommentarer (4) | Relateret: Mere > Linkede Servere

Problem

jeg kan se der er en mulighed i SQL Server Management Studio (SSMS) for Linkede Servere andI ønsker at lære mere om, hvad de gør, og hvordan de arbejder.

Løsningen

Linkede Servere er en metode, som en SQL-Server, der kan tale til en anden ODBC compliantdatabase, sådan som en anden SQL Server instans eller en Oracle-database, med en directT-SQL-forespørgsel.,

der er flere vigtige indstillinger at vide, når du opretter en linket Server.Dette tip dækker oprettelse af en linket Server til en anden s .l Server-instans ved hjælp af SSMS GUI sammen med passende sikkerhedsindstillinger. Det vil også vise, hvordan man brugerden linkede Server i en T-s .l-sætning. Der er et bibliotek med mere avancerede emner tilgængelige, når det grundlæggende er blevet mestret.,

Oprettelse af en SQL-Server koblet Server

I SQL Server Management Studio, i Object Explorer rude, udvide “ServerObjects” afsnit, skal du højreklikke på “Linked Server” og vælge “NewLinked Server…” fra menuen.

ny linket Server – generel side

, der viser en skærm, der ligner skærmen nedenfor. Vælg servertype som S .l Server og indtast navnet på den anden forekomst af s .l Server. I dette eksempel forbindelsen vil blive foretaget til en navngivet forekomst af s .l Server på thesame machine., Dette er helt sikkert tilladt, men mere almindeligt er forbindelsen lavettil en anden maskine helt. Det linkede servernavn er angivet som theServerName\InstanceName. I eksemplet nedenfor opretter jeg forbindelse til localserver, og instansnavnet er “SECURITY_TEST”.

ny linket Server – Sikkerhed side

flyt derefter fra den generelle side til sikkerhedssiden ved hjælp af menuen til venstre.Denne side giver administratoren mulighed for at fortælle denne S .l Server, hvordan man godkender den anden instans., Den øverste halvdel af skærmen gør det muligt for individuelle logins at få adgang til at bruge den linkede Server.

der er 2 metoder til at godkende brugere. Den første er at vælge et login tildem at bruge, når du bruger den linkede Server. I skærmbilledet nedenfor Eric user automaticallyill automatisk logge ind på den sekundære server som login LinkedServerTeston den anden instans. Denne legitimationsoplysninger gemmes i S .l Server Engine oger krypteret. En anden række, LinkedServerTest login (en S .l Login) den Impersonatebo.er markeret., Dette vil forsøge at bruge det samme brugernavn og adgangskode på Linkedserveren, som det gjorde på den originale server. Efterligning af et Logindo .s-Login kan ogsåudføres, men kræver korrekt delegering.

nu fokusere på den nederste halvdel af skærmen. Der er 4 muligheder. Whichhicheveroption er valgt her vil gælde for enhver bruger, der ikke er opført i den øverste sektion.,

Mulighed Beskrivelse
Ikke gøres Dette vil give en fejl, at enhver bruger, der forsøger at bruge Knyttet Serverthat er ikke i listen ovenfor. For at vælge denne indstilling, derskal være mindst 1 login i den øverste halvdel af skærmen.
dette erfejlen alle andre brugere får.
MSG 7416, niveau 16, stat 1,linje 1
adgang til fjernserveren nægtes, fordi der ikke findes login-mappinge .ists.,
laves uden brug af en sikkerhedskontekst dette vil sende en anonym forbindelse til den linkede Server og vil sandsynligvis ikke give nogen adgang til den sekundære server.
laves ved hjælp af logins aktuelle sikkerhedskontekst dette er det samme som at placere hver enkelt bruger i det øverste afsnit med afkrydsningsfeltet impersonate markeret.,
ske ved hjælp af denne sikkerhed kontekst: denne indstilling vil kræve et login og adgangskode indtastes og vil functionthe samme som hvis hver enkelt bruger blev tilføjet til den øverste sektion og givetthe nøjagtig samme brugernavn og adgangskode. Det er den mindst sikre metode til opsætning af en sammenkædet Server som enhver med nogen adgang til den første S .l Server willillbe i stand til at bruge den sammenkædede Server udnytte de gemte legitimationsoplysninger.,

ny linket Server – Server Options side

Der er også indstillinger på siden Indstillinger, men for enkle forespørgsler kan disse indstillinger efterlades som standardværdierne som vist nedenfor.

indstillingerne behøver ikke ændres i de fleste brugssager, og denne tabel vilforklare, hvad indstillingerne gør.

Mulighed Beskrivelse
Sortering Kompatibel Standard er falsk., Dette kan indstilles til true, hvis målet serveruses nøjagtig samme sortering som den vigtigste server. Den changecan forbedre ydeevnen af nogle forespørgsler ved at tillade fjernkolonne sammenligningerpå teksttype kolonner.
dataadgang standard er sandt. Når falsk alle individuelle eksterne forespørgselsudførelservil mislykkes. Denne indstilling er uafhængig af RPC ud. I et scenarioherehere kun remote procedure opkald skal udføres denne indstilling kan bechanged til false mens RPC ud forbliver sandt.,
RPC / RPC Ud Dette står for Remote Procedure Call, og giver dig mulighed for at køre storedprocedures på Linked Server. RPC muliggør Fjernbetjening ProcedureCalls fra den angivne server og RPC UD muliggør Fjernbetjening ProcedureCalls til den angivne server.
brug Remote sortering/sortering navn standard er falsk. Når falsk vil den lokale serversamling værebruges på alle eksterne forespørgsler. Når det er sandt, vil samlingen af fjernbetjeningenserveren blive brugt på forespørgsler., Hvis det er sandt, og den eksterne server ikke er en s .lserver, kan den lokale server ikke automatisk slå den rigtige collationvalue op. I dette tilfælde skal du bruge indstillingen Collation Name til at indtaste theremote server collation.
forbindelse Timeout standard er 0. Når det ikke er nul, er dette antallet af sekunder tilvent før timing ud, når du opretter forbindelse til en linket server. Whenhen 0 thenvalue er faktisk læst fra en server standard, der kan findes ved runningthis kommando.

exec sp_configure 'remote login timeout (s)'
Query Timeout Standard er 0., Når ikke-nul, dette er antallet af sekunder tilvent før timing ud en forespørgsel kører mod en linket server. Når 0 thenthe værdi er faktisk læses fra en server standard, der kan findes ved runningthis kommando.

exec sp_configure 'remote query timeout (s)'
Distributør / Udgiver / Abonnent Disse indstillinger bruges kun, når der er Knyttet Server bliver brugt tilsupport replikation.
La .y Schema Validering standard er falsk. Når falsk skemaet af en ekstern forespørgsel er kontrolleretfør hver forespørgsel udførelse., Eventuelle ændringer i fjernskemaet er registreret på forhånd, og en korrekt forespørgselsplan kan genskabes til accountfor ændringen. Når sand Skemaet er ikke valideret indtil det øjeblik OFE .ecution. Hvis ændringen i fjernskema gør forespørgselsplanen ugyldig, hvilket vil medføre en runtime-fejl.
aktiver fremme af distribuerede transaktioner standard er sandt. Når aktiveret en ekstern forespørgsel, der ændrer datavil påberåbe sig DTC (Distributed Transaction Coordinator)., Denne proces beskytter sådanne forespørgsler ved at tillade begge servere til at have en delt transactionthat enten fuldfører 100% eller 0% – ligesom en almindelig transaktioninaithina lokal forespørgsel. Når deaktiveret DTC er ikke påberåbes, og en mislykket remote .uery kan mislykkes, og ikke være helt rullet tilbage.

Forespørge Data i en SQL-Server koblet Server

for At læse data fra en Forbundet Serveren nogen tabeller eller visninger, skal det fremgå af usinga 4-del identifikator, der består af de Linkede Server navn, database navn, schemaname, og objektets navn – i nævnte rækkefølge.,

For eksempel:

SELECT * FROM .master.sys.databasesSELECT * FROM .WideWorldImporters.Sales.Orders
  • først leveres det linkede servernavn, som er forour eksempel. I dette eksempel skal det parentes på grund af dets format. Ikke alle LinkedServer Navne skal være parentes.
  • dernæst er databasenavnet, master og respectivelyide .orldimporters.
  • tredje er skemaet navn, sys og salg henholdsvis.
  • endelig er objektnavnet angivet. I disse eksempler er objekterne databaserog ordrer.dette eksempel er ret grimt på grund af arten af det linkede servernavn., Heldigvis viser dette gode tip, hvordan man gør navnene lettere at læse i scenarier som dette.

    når opført i en fra klausul disse tabeller og synspunkter kan behandles i e .actsame måde nogen som andre lokale tabel. De kan forespørges, aliased, joined, andhvis korrekte tilladelser er indstillet, kan de ændres ved hjælp af insert, update og deletestatements.

    opkald af lagrede procedurer over en linket Server

    Med henblik på denne demo blev denne lille procedure oprettet i masterdatabasen på den målforbundne server.,

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

    proceduren udføres derefter på den primære instans ved hjælp af denne kommando, som følger det samme 4-delidentifikationsskema som udsagnene i det foregående afsnit.

    EXEC .master.dbo.SQLTips1

    i stedet for det forventede resultat opstår der dog en fejl.

    RPC står for Remote Procedure Call. Som standard er linkede servere bemærkelsesværdige for at foretage gemte procedurekald. Dette afhjælpes let ved at aktivere asingle-indstilling på den linkede Server., Gennemse til de linkede Serveregenskaber, vælg serverindstillinger, og 4thoption på listen vil være RPC ud. Du skal blot ændre denne værdi til sand og clickOK.

    indstillingen mærket RPC er ikke den værdi, der skal ændres. Dettekan virke forvirrende, da fejlmeddelelsen ser ud til at navngive den specifikt, men det er faktisk en arvindstilling, der ikke aktiverer RPC-opkald.

    gentagelse af proceduren giver nu et meget bedre resultat.,

    SQL Server koblet Server Begrænsninger

    Linkede Servere kan være meget nyttige, men der er et par begrænsninger, som tobe opmærksom på, før du implementerer dem. Sammenkædede servere kan ikke bruges til at kalde tablevalued eller skalar funktioner. Desuden er kommandoen truncate ikke tilladt at værekaldet ved hjælp af en linket Server.

    s .l Server Linked Server Use Cases

    ydelsen af linkede servere er ikke altid stor, især med largedata-sæt og masser af sammenføjninger mellem lokale og linkede tabeller. Men de kan være megetnyttigt til at forespørge mindre datasæt.,

    Nogle gange kan et ETL-krav til et mindre datasæt opfyldes ved hjælp af en LinkedServer snarere end et ETL-værktøj som SSIS. Når rækkerne involverede tal i tusinderne eller lavere 10 ‘ erne af tusinder, kan en linket serverbaseret ETL muligvis fuldføre inless tid, end det tager at starte SSIS-motoren.

    næste trin
    • Der er en hel familie af avancerede linkede Servertips om MSS .ltips.,com
    • At Forbundet Serveren navne lettere at læse

    Senest Opdateret: 2019-06-28

    Om forfatteren
    Eric Blinn er Sr. Data-Arkitekt til Squire Patton Boggs. Han er også en s .l forfatter og passere lokal gruppeleder.
    Se alle mine tips
    relaterede ressourcer

    • flere S .l Server DBA Tips…

Leave a Comment