Înțelegerea SQL Server Legate Serverele

De: Eric Blinn | Actualizat: 2019-06-28 | Comentarii (4) | Conexe: Mai > Legate de Servere

Probleme

am vedea acolo este o opțiune în SQL Server Management Studio (SSMS) pentru Legat Servere andI doriți să aflați mai multe despre ceea ce fac și modul în care acestea funcționează.

Soluție

Legate de Servere sunt o metoda prin care un Server SQL pot vorbi cu un alt ODBC compliantdatabase, cum ar fi o altă instanță de SQL Server sau o bază de date Oracle, cu o directT-interogare SQL.,

există mai multe setări importante de știut atunci când configurați un Server conectat.Acest sfat va acoperi crearea unui Server conectat la o altă instanță SQL Server folosind SSMS GUI împreună cu opțiunile de securitate corespunzătoare. De asemenea, va arăta cum să utilizațiserverul conectat într-o declarație T-SQL. Există o bibliotecă agreat de subiecte mai avansate disponibile odată ce elementele de bază au fost stăpânite.,

Crearea unui Server SQL Server Legat

În SQL Server Management Studio, în panoul de Obiect Explorer, extindeți „ServerObjects” secțiune, faceți clic dreapta pe „Legate de Servere” și alegeți „NewLinked Server…” din meniu.

New Linked Server – pagina generală

care va afișa un ecran care arată ca ecranul de mai jos. Alegeți servertype ca SQL Server și tastați în numele celeilalte instanțe SQL Server. În acest exemplu, conexiunea se va face la o instanță numită SQL Server pe aceeași mașină., Acest lucru este cu siguranță permis, dar mai frecvent conexiunea este făcutăla o altă mașină în întregime. Numele serverului legat este specificat ca theServerName \ InstanceName. În exemplul de mai jos mă conectez la serverul local și numele instanței este „SECURITY_TEST”.

New Linked Server – pagina de securitate

apoi, treceți de la pagina generală la pagina de securitate folosind meniul din stânga.Această pagină permite administratorului să spună acestui server SQL cum să se autentifice la cealaltă instanță., Jumătatea superioară a ecranului permite conectarea individuală la begiven acces pentru a utiliza serverul conectat.există 2 metode de autentificare a utilizatorilor. Primul este să selectați o autentificare pentruPentru a le utiliza atunci când utilizați serverul conectat. În captura de ecran de mai jos Eric USERVA conecta automat la serverul secundar ca login LinkedServerTeston cealaltă instanță. Această acreditare este stocată în motorul SQL Server șieste criptat. Unul din al doilea rând, LinkedServerTest login (o autentificare SQL) se verifică Impersonatebox., Acest lucru va încerca să utilizeze același nume de utilizator și parolă pe LinkedServer așa cum a făcut-o pe serverul original. Impersonarea unei autentificări Windows poate, de asemeneasă se facă, dar necesită configurarea unei delegări adecvate.

acum concentrați-vă pe jumătatea de jos a ecranului. Există 4 opțiuni disponibile. Whicheveroption este selectat aici se va aplica oricărui utilizator care nu este listat în secțiunea de sus.,

Opțiune Descriere
Nu fi făcut Acest lucru va da o eroare pentru orice utilizator de a încerca să utilizați Legate Serverthat nu este în lista de mai sus. Pentru a selecta această opțiune, acolotrebuie să fie cel puțin 1 autentificare în jumătatea superioară a ecranului.
aceasta esteeroarea pe care o vor primi toți ceilalți utilizatori.
Msg 7416, nivelul 16,Starea 1, Linia 1
accesul la serverul de la distanță este refuzat deoarece nu există login-mappingexistă.,
se face fără a utiliza un context de securitate aceasta va trimite o conexiune anonimă la serverul Conectat și probabil nu va oferi acces la serverul secundar.
se face folosind contextul de securitate curent al autentificării aceasta este aceeași cu plasarea fiecărui utilizator în secțiunea de sus cucaseta de validare a impersonării bifată.,
Fi realizate folosind acest context de securitate: Această opțiune va cere un nume de utilizator și parolă fi introduse și va functionthe fel ca în cazul în care fiecare utilizator a fost adăugat la secțiunea de sus și giventhe exact același nume de utilizator și o parolă. Este cea mai puțin sigură metodă de a configura un Server conectat, deoarece oricine are acces la primul server SQL va putea utiliza serverul conectat utilizând acreditările salvate.,

Noi Legate de Server – Server Pagina de Opțiuni

Există, de asemenea, setările de pe pagina de Opțiuni, dar pentru interogări simple aceste settingscan fi lăsat ca valorile implicite după cum se arată mai jos.

setările nu trebuie modificate în majoritatea cazurilor de utilizare și acest tabel vaexplică ce fac setările.

opțiune descriere
Collation compatibil implicit este fals., Acest lucru poate fi setat la true dacă serverul țintă utilizează exact aceeași colaționare ca și serverul principal. Schimbareapoate îmbunătăți performanța unor interogări, permițând compararea coloanelor de la distanțăpe coloane de tip text.
acces la date implicit este adevărat. Când sunt false toate execuțiile individuale de interogare la distanțăva eșua. Această setare este independentă de RPC afară. Într-un scenariu în care trebuie executate doar apeluri de procedură la distanță, această setare poate fi schimbată în fals, în timp ce RPC rămâne adevărată.,
RPC/RPC Out aceasta înseamnă apel de procedură la distanță și vă permite să rulați storedprocedures pe serverul conectat. RPC permite Remote ProcedureCalls de la serverul specificat și RPC out permite Remote ProcedureCalls la serverul specificat.
utilizați numele de colaționare/colaționare la distanță implicit este fals. Când este falsă, colaționarea serverului local va fiutilizate pe toate interogările de la distanță. Când este adevărat colaționarea remoteserver va fi utilizat pe interogări., Dacă este adevărat și serverul de la distanță nu este un SQLServer, atunci serverul local nu poate căuta automat collationvalue corespunzătoare. În acest caz, utilizați setarea nume de colaționare pentru a introduce în colaționarea serverului remote.
Timeout conexiune implicit este 0. Când nu este zero, acesta este numărul de secundeașteptați înainte de a vă opri când vă conectați la un server conectat. Când 0, atunci valoarea este de fapt citită de la un server implicit care poate fi găsit rulândaceastă comandă.

exec sp_configure 'remote login timeout (s)'
Timeout interogare implicit este 0., Când nu este zero, acesta este numărul de secundeașteptați înainte de a sincroniza o interogare care rulează pe un server conectat. Când 0 thenthe valoarea este de fapt citit de la un server implicit care poate fi găsit prin rularea acestei comenzi.

exec sp_configure 'remote query timeout (s)'
Distribuitor / Persoana / Abonat Aceste setări sunt utilizate numai atunci când Legate de Server este folosit sprijine replicare.
validare schema leneș implicit este fals. Când este falsă schema unei interogări la distanță este verificatăînainte de executarea fiecărei interogări., Orice modificări ale schemei de la distanță suntdetectate în avans și un plan de interogare adecvat poate fi recreat pentru a accountfor schimbare. Când este adevărată, schema nu este validată până în momentul execuției. Dacă modificarea schemei de la distanță face planul de interogare invalidaceasta va provoca o eroare de rulare.
activați promovarea tranzacțiilor distribuite implicit este adevărat. Când este activată orice interogare la distanță care modifică dateleva invoca DTC (coordonatorul de tranzacții distribuite)., Acest proces protejează astfel de interogări, permițând ambelor servere să aibă o tranzacție partajată care fie completează 100%, fie 0% – la fel ca o tranzacție obișnuită cuo interogare locală. Atunci când este dezactivat DTC nu este invocat și o remotequery nu a reușit poate eșua și să nu fie complet laminate înapoi.

Interogarea de Date Pe un Server SQL Server Legat

Pentru a citi date de la un Server Legat orice tabele sau vederi trebuie să fie referite usinga 4-partea de identificare constând Legate de numele Serverului, numele bazei de date, schemaname, și nume de obiect – în ordinea asta.,

De exemplu:

SELECT * FROM .master.sys.databasesSELECT * FROM .WideWorldImporters.Sales.Orders
  • Primul Server Legat numele este prevăzută, care este forour exemplu. În acest exemplu, acesta trebuie să fie bracketed datorită formatului său. Nu toate numele LinkedServer trebuie să fie între paranteze.
  • Următorul este numele bazei de date, respectiv master și WideWorldImporters.
  • al treilea este numele schemei, respectiv sys și vânzări.
  • în cele din urmă, numele obiectului este listat. În aceste exemple obiectele sunt baze de dateși ordine.

acest exemplu este destul de urât datorită naturii numelui serverului conectat., Din fericire, acest sfat excelent arată cum să faceți Numele mai ușor de citit în scenarii precum acest lucru.

odată enumerate într-o clauză din aceste tabele și vederi pot fi tratate în exact același mod ca orice alt tabel local. Ele pot fi interogate, alias, s-au alăturat, șidacă permisiunile corespunzătoare sunt setate, acestea pot fi modificate folosind insert, update, și deletestatements.

apelarea procedurilor stocate pe un Server conectat

în scopul acestei demonstrații, această procedură mică a fost creată în masterdatabase pe serverul conectat țintă.,

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

procedura este apoi executat pe primară exemplu, folosind această comandă whichfollows același 4 partea de identificare schema după declarațiile în secțiunea anterioară.

EXEC .master.dbo.SQLTips1

cu toate acestea, în loc de rezultatul așteptat Se ridică o eroare.

RPC standuri pentru apel procedura de la distanță. În mod implicit, serverele conectate sunt notabile pentru a efectua apeluri de procedură stocate. Acest lucru este ușor de remediat prin activarea asingle setare pe serverul conectat., Navigați la proprietățile serverului legat, alegeți Opțiunile serverului și opțiunea 4thoption din listă va fi RPC. Pur și simplu schimbați această valoare în True și clickOK.

setarea etichetată RPC nu este valoarea care trebuie modificată. Astea pot părea confuz deoarece mesaj de eroare pare să-l numească în mod special, dar e de fapt o moștenire setare care nu permite apeluri RPC.

reluarea procedurii produce acum un rezultat mult mai bun.,

SQL Server Linked Server limitări

serverele conectate pot fi foarte utile, dar există câteva limitări de care să fiți conștienți înainte de a le implementa. Serverele conectate nu pot fi utilizate pentru a apela funcții tablevalued sau scalar. De asemenea, comanda trunchiate nu este permisă să fienumit folosind un Server conectat.

SQL Server legat cazuri de Utilizare server

performanța serverelor legate nu este întotdeauna mare, mai ales cu seturi largedata și o mulțime de se alătură între tabele locale și legate. Dar ele pot fi foarte utile pentru interogarea seturilor de date mai mici.,uneori, o cerință ETL pentru un set de date mai mic poate fi îndeplinită folosind un LinkedServer, mai degrabă decât un instrument ETL ca SSIS. Atunci când rândurile implicat număr în thousandsor mai mică de 10 de mii un Server Legat bazat ETL ar putea fi în măsură să finalizeze în mai puțin timp decât este nevoie pentru a începe SSIS motor.

pașii următori
  • există o întreagă familie de sfaturi avansate legate de server pe MSSQLTips.,com
  • de a Face Server Legat numele mai ușor de citit

Ultima Actualizare: 2019-06-28

Despre autor
Eric Blinn este Sr. Date de Arhitect pentru Squire Patton Boggs. El este, de asemenea, un autor SQL și să treacă lider de grup Local.
Vezi toate sfaturile mele
Resurse conexe

  • Mai multe sfaturi SQL Server DBA…

Leave a Comment