írta: Eric blinn-t | Frissítve: 2019-06-28 | Hozzászólások (4) | Kapcsolódó: Több > Kapcsolódó Szerverek
Probléma
látom, hogy van egy lehetőség az SQL Server Management Studio (SSMS) a Kapcsolódó Szerverek andI szeretnél többet megtudni mi hogyan működik.
megoldás
A kapcsolt kiszolgálók olyan módszer, amellyel egy SQL-kiszolgáló beszélhet egy másik ODBC compliantdatabase-rel, például egy másik SQL-kiszolgáló példányával vagy egy Oracle-adatbázissal, directT-SQL lekérdezéssel.,
számos fontos beállítást kell tudni a kapcsolt szerver beállításakor.Ez a tipp kiterjed egy kapcsolódó szerver létrehozására egy másik SQL Server példányhoz, amely az SSMS GUI-t használja a megfelelő biztonsági lehetőségekkel együtt. Azt is megmutatja, hogyan kell használnikapcsolt szerver egy T-SQL utasításban. Van agreat könyvtár fejlettebb témák elérhető, ha az alapokat már elsajátította.,
SQL Server Linked Server létrehozása
az SQL Server Management Studio alkalmazásban az Object Explorer panelen bontsa ki a” ServerObjects “részt, kattintson a jobb gombbal a” Linked Servers “elemre, majd válassza a menü” NewLinked Server… ” elemét.
Új kapcsolódó szerver – Általános oldal
Ez egy olyan képernyőt jelenít meg, amely úgy néz ki, mint az alábbi képernyő. Válassza ki a szervertípust SQL szerverként, majd írja be az SQL Server másik példányának nevét. Ebben a példában a kapcsolat az SQL Server nevű példányához fog kapcsolódniugyanaz a gép., Ez minden bizonnyal megengedett,de gyakrabban történik a kapcsolategy másik géphez. A kapcsolódó kiszolgáló neve a következő: theServerName \ InstanceName. Az alábbi példában a localserverhez csatlakozom, a példány neve “SECURITY_TEST”.
Új kapcsolódó szerver – biztonsági oldal
ezután lépjen az Általános oldalról a biztonsági oldalra a bal oldali menü segítségével.Ez az oldal lehetővé teszi a rendszergazda számára, hogy elmondja ennek az SQL szervernek, hogyan kell hitelesítenia másik példány., A képernyő felső fele lehetővé teszi az egyes bejelentkezések számára, hogy hozzáférjenek a kapcsolt szerver használatához.
2 módszer létezik a felhasználók hitelesítésére. Az első a bejelentkezés kiválasztásaa kapcsolódó kiszolgáló használatakor használni kívánt. Az alábbi képernyőképen az Eric felhasználóautomatikusan bejelentkezik a másodlagos szerverre, mint a bejelentkezési LinkedServerTeston a másik példány. Ez a hitelesítő adat az SQL Server motoron belül tárolódik titkosítva van. Az egyik a második sor, a LinkedServerTest bejelentkezés (SQL bejelentkezés) az Impersonatebox be van jelölve., Ez megpróbálja ugyanazt a felhasználónevet és jelszót használni a Linkedserveren, mint az eredeti szerveren. A Windows-Bejelentkezés megszemélyesítése is megtehető, de megfelelő delegálást igényel.
most összpontosítson a képernyő alsó felére. Jelenleg 4 lehetőség áll rendelkezésre. Az itt kiválasztott Whicheveroption minden olyan felhasználóra vonatkozik, amely nem szerepel a felső szakaszban.,
opció | leírás | |
---|---|---|
nem készíthető | ez hibát okoz minden olyan felhasználónak, aki megpróbálja használni a hivatkozott Szerverthogy nincs a fenti listában. Ennek a lehetőségnek a kiválasztásához ottlegalább 1 bejelentkezésnek kell lennie a képernyő felső felében. ez aza hiba, amelyet minden más felhasználó kap. Msg 7416, Level 16, State 1, Line 1 hozzáférés a távoli szerver megtagadják, mert nincs bejelentkezés-mappingexists., |
|
biztonsági környezet használata nélkül | ez névtelen kapcsolatot küld a kapcsolt kiszolgálóra, és valószínűlegnem biztosít hozzáférést a másodlagos kiszolgálóhoz. | |
a bejelentkezés aktuális biztonsági környezete | ez megegyezik azzal, hogy minden egyes felhasználót a felső szakaszba helyezünka Megszemélyesítés jelölőnégyzet be van jelölve., | |
kell tenni ezzel a biztonsági kontextusban: | ez az opció megköveteli a bejelentkezés és jelszó kell beírni, és működni fogugyanaz, mintha minden egyes felhasználó adunk a felső részhez, és megadjaa pontosan ugyanazt a felhasználónevet és jelszót. Ez a legkevésbé biztonságos módszer egy kapcsolt szerver beállítására, mivel bárki, aki hozzáfér az első SQL szerverhez, képes lesz használni a kapcsolt kiszolgálót a mentett hitelesítő adatok felhasználásával., |
Új kapcsolódó kiszolgáló – kiszolgáló opciók oldal
az opciók oldalon is vannak Beállítások, de egyszerű lekérdezéseknél ezek a Beállításokaz alábbiakban látható alapértelmezett értékek maradhatnak.
a beállításokat a legtöbb felhasználási esetben nem kell módosítani, és ez a táblázat leszmagyarázza el, hogy a Beállítások mit tesznek.
opció | leírás |
---|---|
collation kompatibilis | alapértelmezett hamis., Ez akkor állítható be true értékre, ha a célszerver pontosan ugyanazt az összevonást használja, mint a főszerver. A változásjavíthatja egyes lekérdezések teljesítményét azáltal, hogy lehetővé teszi a távoli oszlop összehasonlításátA szövegtípus oszlopain. |
adathozzáférés | Az alapértelmezett érték igaz. Ha hamis minden egyes távoli lekérdezés végrehajtásabukik. Ez a beállítás független RPC ki. Egy forgatókönyvbenitt csak távoli eljáráshívásokat kell végrehajtani, ez a Beállítás hamis lehet, míg az RPC out igaz marad., |
RPC/RPC Out | ez a távoli eljáráshívást jelenti, amely lehetővé teszi a storedprocedures futtatását a kapcsolt kiszolgálón. RPC lehetővé teszi a távoli ProcedureCalls a megadott szerver RPC OUT lehetővé teszi a távoli ProcedureCalls a megadott szerverre. |
használja a Remote Collation/Collation Name | alapértelmezett hamis. Ha hamis, akkor a helyi szerver-összesítés leszminden távoli lekérdezésnél. Ha igaz, a remoteserver összesítése a lekérdezéseknél kerül felhasználásra., Ha igaz, a távoli szerver pedig nem SQLServer, akkor a helyi kiszolgáló nem tudja automatikusan megkeresni a megfelelő collationvalue-t. Ebben az esetben használja a Collation Name beállítást a theremote server collation beírásához. |
kapcsolat időtúllépése | alapértelmezett értéke 0. Ha nem nulla, akkor ez a másodpercek száma, mielőtt időzítené, amikor csatlakozik egy kapcsolt kiszolgálóhoz. Amikor 0 akkor thevalue valójában olvasni egy szerver alapértelmezett, amely megtalálható runningthis parancsot.
exec sp_configure 'remote login timeout (s)' |
lekérdezési időtúllépés | alapértelmezett érték 0., Ha nem nulla, akkor ez a másodpercek száma, mielőtt időzítené a lekérdezést, amely egy kapcsolt szerver ellen fut. Amikor 0 akkoraz érték valójában egy kiszolgáló alapértelmezett értékéből olvasható, amely a runningthis paranccsal található meg.
exec sp_configure 'remote query timeout (s)' |
Distributor / Publisher / Subscriber | ezeket a beállításokat csak akkor használjuk, ha a kapcsolt szervert használjuktámogatja a replikációt. |
lusta séma validáció | alapértelmezés hamis. Ha hamis a távoli lekérdezés sémája ellenőrzöttminden lekérdezés végrehajtása előtt., A távoli séma bármilyen módosításaés egy megfelelő lekérdezési terv újra létrehozható a Account for the change-hez. Ha igaz, akkor a sémát nem érvényesítik a végrehajtásig. Ha a távoli sémában bekövetkezett változás érvénytelenné teszi a lekérdezési tervet, ami futásidejű hibát okoz. |
az Elosztott tranzakciók promóciójának engedélyezése | Az alapértelmezett érték igaz. Ha engedélyezve van bármilyen távoli lekérdezés, amely megváltoztatja az adatokatmeghívja a DTC-t (elosztott tranzakciós koordinátor)., Ez a processprotects ilyen lekérdezések azáltal, hogy mindkét szerver, hogy egy közös tranzakció, amely vagy befejezi 100% vagy 0% – csakúgy, mint a rendszeres tranzakció a helyi lekérdezés. Ha le van tiltva a DTC nem hivatkoznak, egy sikertelen remotequery sikertelen lehet, és nem lehet teljesen hengerelt vissza. |
az adatok lekérdezése egy SQL Server Linked Server
Adatolvasáshoz egy kapcsolt szerverről minden táblára vagy nézetre hivatkozni kell egy 4 részes azonosító, amely a kapcsolt szerver nevét, adatbázis nevét, schemaname-jét és objektumnevét tartalmazza – ebben a sorrendben.,
például:
SELECT * FROM .master.sys.databasesSELECT * FROM .WideWorldImporters.Sales.Orders
- először a csatolt szerver neve kerül megadásra, amely példánként szerepel. Ebben a példában a formátum miatt zárójelben kell lennie. Nem minden LinkedServer nevet kell zárójelbe tenni.
- a következő az adatbázis neve, a master és a WideWorldImporters.
- a harmadik a sémanév,a sys és az értékesítés.
- végül az objektum neve szerepel. Ezekben a példákban az objektumok adatbázisokés megrendelések.
Ez a példa elég csúnya jellege miatt a kapcsolódó szerver nevét., Szerencsére ez a nagyszerű tipp megmutatja,hogyan lehet a neveket könnyebben olvasni ilyen forgatókönyvekben.
amint szerepel a FROM záradékban, ezek a táblázatok és nézetek pontosan ugyanúgy kezelhetők, mint bármely más helyi táblázat. Ezek lekérdezhetők, aliased, csatlakozott, ésha megfelelő engedélyek vannak beállítva, lehet módosítani a Beszúrás, frissítés, és deletestatements.
A tárolt eljárások meghívása egy kapcsolt kiszolgálón
a demo alkalmazásában ezt a kis eljárást a masterdatabase-ben hozták létre a célhoz kapcsolt kiszolgálón.,
USE masterGOCREATE PROCEDURE dbo.SQLTips1 AS SELECT 'I was able to be called';
az eljárást az elsődleges példányon hajtják végre ezzel a paranccsal, amelyugyanazt a 4 részazonosító sémát követi, mint az előző szakasz utasításai.
EXEC .master.dbo.SQLTips1
a várt eredmény helyett azonban hiba lép fel.
RPC jelentése távoli eljárás hívás. Alapértelmezés szerint a kapcsolt kiszolgálók figyelemre méltóak a tárolt eljáráshívások kezdeményezéséhez. Ez könnyen orvosolható az Asingle beállítás engedélyezésével a kapcsolt kiszolgálón., Böngésszen a kapcsolódó szerver tulajdonságai között, válassza a Kiszolgálóopciók lehetőséget, a listában a 4. lehetőség pedig az RPC Out lesz. Egyszerűen változtassa meg ezt az értéket True-ra és clickokra.
Az RPC feliratú beállítás nem az az érték, amelyet meg kell változtatni. Ez zavarónak tűnik, mivel úgy tűnik, hogy a hibaüzenet kifejezetten megnevezi, de ezvalójában egy örökölt beállítás, amely nem engedélyezi az RPC hívásokat.
az eljárás újrafuttatása most sokkal jobb eredményt hoz.,
SQL Server Linked Server Limities
Linked Servers lehet nagyon hasznos, de van néhány korlátozás, amelyek tobe tisztában végrehajtása előtt őket. A kapcsolt kiszolgálók nem használhatók tablevalued vagy Skalar funkciók hívására. Ezenkívül a csonka parancs nem engedélyezhetőegy kapcsolt szerver használatával.
SQL Server Linked Server Use Cases
a kapcsolt kiszolgálók teljesítménye nem mindig nagy, különösen a largedata készletek és a helyi és a kapcsolt táblák közötti sok csatlakozás esetén. De nagyon hasznosak lehetnek a kisebb adatkészletek lekérdezéséhez.,
néha egy kisebb adatkészlet ETL-követelménye egy LinkedServer segítségével teljesíthető, nem pedig egy olyan ETL eszközzel, mint az SSIS. Amikor a sorok részt száma az ezresvagy alacsonyabb 10S ezer egy kapcsolt szerver alapú ETL lehet, hogy teljes inless idő, mint tart, hogy indítsa el a SSIS motor.
következő lépések
- van egy egész család fejlett kapcsolódó szerver tippeket MSSQLTips.,com
- Hogy Kapcsolódó Kiszolgáló nevét könnyebben olvasható
Utolsó frissítése: 2019-06-28
a szerzőről
tekintse meg az összes tippemet
- több SQL Server DBA tipp…