Megosztás a következőn keresztül:


Diagnosztikai kapcsolat adatbázis-rendszergazdák számára

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure 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, vagy admin:<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 master adatbá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 a master következő paranccsal:

    sqlcmd -A -d master
    

    Javasoljuk, hogy csatlakozzon az adatbázishoz a master DAC-tal, mert master az 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_TIMEOUT egy 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 a KILL parancs 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 feladatoksys.dm_os_tasks, de a munkamenet a sys.dm_exec_sessions parancs 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ővel sys.dm_os_tasksfelsorolt sessions_id <> NULL feladatot), é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