Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Az SQL Server speciális diagnosztikai kapcsolatot biztosít a rendszergazdák számára, ha a kiszolgálóhoz való normál kapcsolatok nem lehetségesek. Ez a diagnosztikai kapcsolat lehetővé teszi a rendszergazda számára, hogy hozzáférjen az SQL Serverhez diagnosztikai lekérdezések végrehajtásához és a problémák elhárításához még akkor is, ha az SQL Server nem válaszol a szabványos kapcsolatkérésekre.
Ez a dedikált rendszergazdai kapcsolat (DAC) támogatja az SQL Server titkosítását és egyéb biztonsági funkcióit. A DAC csak egy másik rendszergazdai felhasználóra engedélyezi a felhasználói környezet módosítását.
Az SQL Server minden kísérletet megtesz a DAC sikeres csatlakoztatására, de szélsőséges helyzetekben előfordulhat, hogy nem sikerül.
Csatlakozás DAC-tal
Alapértelmezés szerint a kapcsolat csak a kiszolgálón futó ügyféltől engedélyezett. A hálózati kapcsolatok csak akkor engedélyezettek, ha a sp_configure tárolt eljárással, a távoli rendszergazdai kapcsolatok kiszolgálójának konfigurációs beállításával vannak konfigurálva.
Csak az SQL Server sysadmin szerepkör tagjai csatlakozhatnak a DAC használatával.
A DAC egy speciális rendszergazdai kapcsolóval (sqlcmd) érhető el és támogatott a -A parancssori segédprogramon keresztül. A használatról sqlcmdtovábbi információt az sqlcmd – Szkriptelési változókkal való használat című témakörben talál. Az előtagokat admin: a példány nevéhez is csatlakoztathatja a formátumban sqlcmd -S admin:<instance_name>. A DAC-t az SQL Server Management Studio Lekérdezésszerkesztőből is kezdeményezheti a csatlakozással admin:<instance_name>.
DAC létrehozása az SQL Server Management Studióból:
Bontsa le az összes kapcsolatot a kapcsolódó SQL Server-példánysal, beleértve az Object Explorert és az összes megnyitott lekérdezési ablakot.
A menüben válassza a Fájl új > adatbázismotor lekérdezése > lehetőséget
A Kiszolgálónév mező kapcsolat párbeszédpaneljén adja meg
admin:<server_name>, hogy az alapértelmezett példányt használja-e, vagyadmin:<server_name>\<instance_name>ha nevesített példányt használ.
DAC-port
Az SQL Server figyeli a DAC-t az 1434-ös TCP-porton, ha elérhető, vagy egy TCP-portot, amely dinamikusan van hozzárendelve az adatbázismotor indításakor. A hibanapló tartalmazza a DAC által figyelt portszámot. Alapértelmezés szerint a DAC-figyelő csak a helyi porton fogadja a kapcsolatot. A távoli felügyeleti kapcsolatokat aktiváló kódmintát a Kiszolgáló konfigurációja: távoli rendszergazdai kapcsolatok című témakörben talál.
A távoli felügyeleti kapcsolat konfigurálása után a DAC-figyelő az SQL Server újraindítása nélkül engedélyezve van, és az ügyfél mostantól távolról is csatlakozhat a DAC-hoz. Engedélyezheti a DAC-figyelő számára, hogy távolról fogadja a kapcsolatokat, még akkor is, ha az SQL Server nem válaszol. Ehhez először helyileg csatlakozik az SQL Serverhez a DAC használatával, majd végrehajtja a tárolt eljárást a sp_configure távoli kapcsolatokból való csatlakozás elfogadásához.
A fürtkonfigurációkban a DAC alapértelmezés szerint ki lesz kapcsolva. A felhasználók végrehajthatják a távoli rendszergazdai kapcsolat beállítását sp_configure , amely lehetővé teszi a DAC-figyelő számára a távoli kapcsolat elérését. Ha az SQL Server nem válaszol, és a DAC-figyelő nincs engedélyezve, előfordulhat, hogy újra kell indítania az SQL Servert a DAC-hoz való csatlakozáshoz. Ezért javasoljuk, hogy engedélyezze a távoli rendszergazdai kapcsolatok konfigurációs beállítását a fürtözött rendszereken.
A DAC-portot az SQL Server dinamikusan rendeli hozzá az indítás során. Az alapértelmezett példányhoz való csatlakozáskor a DAC nem használ SSRP-kérést az SQL Server Browser Service-hez csatlakozáskor. Először az 1434-s TCP-porton keresztül csatlakozik. Ha ez nem sikerül, SSRP-hívást indít a port lekéréséhez. Ha az SQL Server Browser nem figyeli az SSRP-kéréseket, a kapcsolatkérés hibát ad vissza. Tekintse meg a hibanaplót, és keresse meg a DAC által figyelt portszámot. Ha az SQL Server távoli felügyeleti kapcsolatok elfogadására van konfigurálva, a DAC-t explicit portszámmal kell kezdeményezni:
sqlcmd -S tcp:<server>,<port>
Az SQL Server hibanaplója felsorolja a DAC portszámát, amely alapértelmezés szerint 1434. Ha az SQL Server úgy van konfigurálva, hogy csak helyi DAC-kapcsolatokat fogadjon el, csatlakozzon a visszacsatolási adapterrel a következő paranccsal:
sqlcmd -S 127.0.0.1,1434
Korlátozások
Mivel a DAC csak a ritkán előforduló kiszolgálói problémák diagnosztizálása céljából létezik, a kapcsolatra bizonyos korlátozások vonatkoznak:
Annak biztosítása érdekében, hogy a kapcsolathoz rendelkezésre álljanak erőforrások, az SQL Server példányonként csak egy DAC engedélyezett. Ha a DAC-kapcsolat már aktív, a DAC-on keresztüli kapcsolódásra vonatkozó új kéréseket a rendszer az 17810-s hibával megtagadja.
Az erőforrások megőrzése érdekében az SQL Server Express nem értesül a DAC-port kérésről, hacsak nem indítják a 7806-os jelzővel.
A DAC kezdetben megpróbál csatlakozni a bejelentkezéshez társított alapértelmezett adatbázishoz. A sikeres csatlakozás után csatlakozhat az
masteradatbázishoz. Ha az alapértelmezett adatbázis offline állapotban van, vagy más módon nem érhető el, a kapcsolat 4060-os hibát ad vissza. Ez azonban sikeres lesz, ha felülírja az alapértelmezett adatbázist az adatbázishoz való csatlakozáshoz amasterkövetkező paranccsal:sqlcmd -A -d masterJavasoljuk, hogy csatlakozzon az adatbázishoz a
masterDAC-tal, mertmasteraz adatbázismotor példányának elindítása esetén garantáltan elérhető lesz.Az SQL Server tiltja a párhuzamos lekérdezések vagy parancsok futtatását a DAC-jal. A 3637-s hiba például akkor jön létre, ha az alábbi utasítások valamelyikét hajtja végre a DAC-tal:
RESTORE...BACKUP...
A DAC-hoz csak korlátozott erőforrások érhetők el. Ne használja a DAC-t olyan erőforrás-igényes lekérdezések vagy lekérdezések futtatására, amelyek blokkolhatják a többi lekérdezést. Ez segít megakadályozni, hogy a DAC a meglévő kiszolgálói problémákat elegyítse. A lehetséges blokkolási forgatókönyvek elkerülése érdekében, ha blokkolható lekérdezéseket kell futtatnia, futtassa a lekérdezést pillanatképalapú elkülönítési szinteken, ha lehetséges; ellenkező esetben állítsa a tranzakcióelkülönítési szintet
READ UNCOMMITTEDLOCK_TIMEOUTegy rövid értékre, például 2000 ezredmásodpercre vagy mindkettőre. Ez megakadályozza a DAC-munkamenet letiltását. Az SQL Server állapotától függően azonban előfordulhat, hogy a DAC-munkamenet blokkolva lesz egy reteszeléskor. Előfordulhat, hogy a DAC-munkamenetet CTRL-C használatával le tudja zárni, de ez nem garantált. Ebben az esetben az egyetlen lehetőség lehet az SQL Server újraindítása.A DAC-tal való kapcsolat és hibaelhárítás biztosítása érdekében az SQL Server korlátozott erőforrásokat foglal le a DAC-on futtatott parancsok feldolgozásához. Ezek az erőforrások általában csak egyszerű diagnosztikai és hibaelhárítási funkciókhoz elegendőek, például az alább felsoroltakhoz.
Bár elméletileg bármilyen olyan Transact-SQL utasítást futtathat, amelyet nem kell párhuzamosan végrehajtania a DAC-on, határozottan javasoljuk, hogy a használatot a következő diagnosztikai és hibaelhárítási parancsokra korlátozza:
Dinamikus felügyeleti nézetek lekérdezése alapszintű diagnosztikához, például a zárolási állapot sys.dm_tran_locks, a gyorsítótárak állapotának ellenőrzéséhez sys.dm_os_memory_cache_counters, aktív munkamenetekhez és kérelmekhez pedig sys.dm_exec_requests és sys.dm_exec_sessions. Kerülje az erőforrás-igényes dinamikus felügyeleti nézeteket (például sys.dm_tran_version_store megvizsgálja a teljes verziótárat, és kiterjedt I/O-t okozhat), vagy összetett illesztéseket használ. A teljesítményre gyakorolt hatásokkal kapcsolatos információkért tekintse meg az adott dinamikus felügyeleti nézet dokumentációját.
Katalógusnézetek lekérdezése.
Alapszintű DBCC-parancsok, például DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS és DBCC SQLPERF. Kerülje az erőforrás-igényes parancsokat, például a DBCC CHECKDB, a DBCC DBREINDEX vagy a DBCC SHRINKDATABASE parancsokat.
KILL <spid>Transact-SQL parancsot. Az SQL Server állapotától függően előfordulhat, hogy aKILLparancs nem sikerül. Az egyetlen lehetőség lehet a példány újraindítása SQL Server vagy felügyelt Azure SQL-példány esetén. Az alábbiakban néhány általános irányelv található:Ellenőrizze, hogy az SPID-t lekérdezéssel
SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>;ölték-e meg. Ha nem ad vissza sorokat, az azt jelenti, hogy a munkamenet meghalt.Ha a munkamenet még mindig ott van, ellenőrizze, hogy vannak-e a munkamenethez hozzárendelt feladatok a lekérdezés
SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>;futtatásával. Ha ott látja a feladatot, valószínűleg a munkamenete éppen le lesz ölve. Ez jelentős időt vehet igénybe, és egyáltalán nem lehet sikeres.Ha a munkamenethez nincsenek hozzárendelt feladatok
sys.dm_os_tasks, de a munkamenet asys.dm_exec_sessionsparancs végrehajtása után is megmaradKILL, az azt jelenti, hogy nem áll rendelkezésre feldolgozó. Válassza ki a jelenleg futó tevékenységek egyikét (a nézetben a következővelsys.dm_os_tasksfelsoroltsessions_id <> NULLfeladatot), és a munkavégző felszabadításához tiltsa le a hozzá társított munkamenetet. Lehet, hogy nem elég egyetlen munkamenetet megölni: lehet, hogy több munkamenetet is meg kell ölnie.
Az Azure SQL Database korlátozásai
Amikor a DAC-tal csatlakozik az Azure SQL Database-hez, a beállítással meg kell adnia az adatbázis nevét is a kapcsolati -d sztringben.
A felügyelt Azure SQL-példány korlátozása
A DAC nem működik privát végponton a felügyelt Azure SQL-példányhoz. Felügyelt SQL-példányokon a DAC az 1434-s porton figyel. Mivel a felügyelt SQL-példányok privát végpontjai csak az 1433-as porton engedélyezik a kapcsolatokat, nem használhat privát végpontot DAC-kapcsolat létrehozásához. A DAC-hoz való csatlakozáshoz ugyanabban a virtuális hálózatban kell lennie, mint a felügyelt SQL-példánynak.
Példák
Ebben a példában egy rendszergazda azt veszi észre, hogy a kiszolgáló contoso-server nem válaszol, és meg szeretné diagnosztizálni a problémát. Ehhez a felhasználó aktiválja a sqlcmd parancssori segédprogramot, és a DAC jelzésével csatlakozik a kiszolgálóhoz contoso-server-A .
sqlcmd -S contoso-server -U sa -P <StrongPassword> -A
A rendszergazda mostantól lekérdezéseket hajthat végre a probléma diagnosztizálásához, és esetleg megszakíthatja a nem válaszoló munkameneteket.
Az SQL Database-hez csatlakozó hasonló példa a következő parancsot használja, beleértve az -d adatbázis megadásához használt paramétert is:
sqlcmd -S serverName.database.windows.net,1434 -U sa -P <StrongPassword> -d AdventureWorks
Kapcsolódó tartalom
- Sqlcmd használata szkriptelési változókkal
- sqlcmd segédprogram
- VÁLASZT (Transact-SQL)
- sp_who (Transact-SQL)
- sp_lock (Transact-SQL)
- KILL (Transact-SQL)
- DBCC CHECKALLOC (Transact-SQL)
- DBCC CHECKDB (Transact-SQL)
- DBCC OPENTRAN (Transact-SQL)
- DBCC INPUTBUFFER (Transact-SQL)
- kiszolgáló konfigurációs beállításai
- Tranzakcióval kapcsolatos dinamikus felügyeleti nézetek és függvények (Transact-SQL)
- Nyomkövetési jelzők beállítása a DBCC TRACEON használatával (Transact-SQL)