Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Server poskytuje správcům speciální diagnostické připojení, pokud standardní připojení k serveru není možné. Toto diagnostické připojení umožňuje správci přistupovat k SQL Serveru, aby spouštět diagnostické dotazy a řešit problémy i v případě, že SQL Server nereaguje na standardní požadavky na připojení.
Toto vyhrazené připojení správce (DAC) podporuje šifrování a další funkce zabezpečení SQL Serveru. DaC umožňuje změnit kontext uživatele jenom na jiného uživatele s rolí správce.
SQL Server provádí každý pokus o úspěšné připojení DAC, ale v extrémních situacích to nemusí být úspěšné.
Připojení pomocí DAC
Ve výchozím nastavení je připojení povolené jenom z klienta spuštěného na serveru. Síťová připojení nejsou povolená, pokud nejsou nakonfigurovaná pomocí sp_configure uložené procedury s možností konfigurace serveru připojení vzdáleného správce .
Pomocí dac se můžou připojit jenom členové role správce systému SQL Server.
DaC je k dispozici a podporován prostřednictvím nástroje příkazového sqlcmd řádku pomocí speciálního přepínače správce (-A). Další informace o použití sqlcmdnaleznete v tématu sqlcmd – použití se skriptovacími proměnnými. Můžete také připojit předponu admin: k názvu instance ve formátu sqlcmd -S admin:<instance_name>. DaC můžete také zahájit z editoru dotazů aplikace SQL Server Management Studio připojením k admin:<instance_name>.
Vytvoření dac ze sady SQL Server Management Studio:
Odpojte všechna připojení ke související instanci SQL Serveru, včetně Průzkumníka objektů a všech otevřených oken dotazů.
V nabídce vyberte Soubor > nový > dotaz databázového stroje.
V dialogovém okně připojení v poli Název serveru zadejte
admin:<server_name>, zda používáte výchozí instanci neboadmin:<server_name>\<instance_name>používáte pojmenovanou instanci.
Port DAC
SQL Server naslouchá DAC na portu TCP 1434, pokud je k dispozici, nebo port TCP dynamicky přiřazený při spuštění databázového stroje. Protokol chyb obsahuje číslo portu, na které daC naslouchá. Ve výchozím nastavení naslouchací proces DAC přijímá připojení pouze na místním portu. Ukázka kódu, která aktivuje připojení vzdálené správy, najdete v tématu Konfigurace serveru: připojení vzdáleného správce.
Po nakonfigurování připojení ke vzdálené správě je naslouchací proces DAC povolený bez restartování SQL Serveru a klient se teď může vzdáleně připojit k DAC. Naslouchací proces DAC umožňuje vzdáleně přijímat připojení, i když SQL Server nereaguje, a to tak, že se nejprve připojí k SQL Serveru místně pomocí daC a potom spustí uloženou proceduru sp_configure pro příjem připojení ze vzdálených připojení.
V konfiguracích clusteru bude dac ve výchozím nastavení vypnutý. Uživatelé mohou spustit možnost sp_configure připojení vzdáleného správce, aby naslouchací proces DAC mohl přistupovat ke vzdálenému připojení. Pokud SQL Server nereaguje a naslouchací proces DAC není povolený, možná budete muset restartovat SQL Server, abyste se mohli připojit pomocí DAC. Proto doporučujeme povolit možnost konfigurace připojení vzdáleného správce v clusterovaných systémech.
Port DAC se přiřazuje dynamicky SQL Serverem během spouštění. Při připojování k výchozí instanci se DAC při připojování vyhne použití požadavku SSRP (SQL Server Resolution Protocol) ke službě SQL Server Browser Service. Nejprve se připojí přes port TCP 1434. Pokud se to nezdaří, provede volání SSRP pro získání portu. Pokud SQL Server Browser nenaslouchá požadavkům SSRP, vrátí žádost o připojení chybu. V protokolu chyb vyhledejte číslo portu DAC, na které naslouchá. Pokud je SQL Server nakonfigurovaný tak, aby přijímal připojení ke vzdálené správě, musí být DAC inicializován s explicitním číslem portu:
sqlcmd -S tcp:<server>,<port>
Protokol chyb SQL Serveru uvádí číslo portu dac, což je ve výchozím nastavení 1434. Pokud je SQL Server nakonfigurovaný tak, aby přijímal pouze místní připojení DAC, připojte se pomocí adaptéru zpětné smyčky pomocí následujícího příkazu:
sqlcmd -S 127.0.0.1,1434
Omezení
Vzhledem k tomu, že DAC existuje výhradně pro diagnostiku problémů se serverem ve výjimečných případech, existují určitá omezení připojení:
Aby bylo možné zaručit, že pro připojení jsou k dispozici prostředky, je pro každou instanci SQL Serveru povolen pouze jeden DAC. Pokud už je připojení DAC aktivní, všechny nové žádosti o připojení prostřednictvím DAC se zamítnou s chybou 17810.
Pokud chcete ušetřit prostředky, SQL Server Express nenaslouchá na portu DAC, pokud není spuštěn s příznakem trasování 7806.
DaC se zpočátku pokusí připojit k výchozí databázi přidružené k přihlášení. Po úspěšném připojení se můžete připojit k
masterdatabázi. Pokud je výchozí databáze offline nebo není dostupná, připojení vrátí chybu 4060. Pokud ale přepíšete výchozí databázi tak, aby se k databázi připojilamasterpomocí následujícího příkazu, bude úspěšná:sqlcmd -A -d masterDoporučujeme připojit se k
masterdatabázi pomocí daC, protožemasterje zaručeno, že je k dispozici, pokud je spuštěna instance databázového stroje.SQL Server zakáže spouštění paralelních dotazů nebo příkazů v jazyce DAC. Například chyba 3637 se vygeneruje, pokud v jazyce DAC spustíte některý z následujících příkazů:
RESTORE...BACKUP...
U daC je zaručeno, že budou k dispozici pouze omezené prostředky. DaC nepoužívejte ke spouštění dotazů nebo dotazů náročných na prostředky, které můžou blokovat jiné dotazy. To pomáhá zabránit, aby daC složený z existujících problémů se serverem. Pokud se chcete vyhnout potenciálním scénářům blokování, pokud potřebujete spouštět dotazy, které by mohly blokovat, spusťte dotaz v případě potřeby na úrovních izolace založených na snímku; v opačném případě nastavte úroveň izolace transakce na
READ UNCOMMITTEDa nastavteLOCK_TIMEOUThodnotu na krátkou hodnotu, například 2000 milisekund nebo obojí. Tím zabráníte zablokování relace DAC. V závislosti na stavu, ve které je SQL Server, se ale relace DAC může zablokovat na západce. Možná budete moct ukončit relaci DAC pomocí CTRL-C, ale není zaručená. V takovém případě může být jedinou možností restartování SQL Serveru.Aby se zajistilo připojení a řešení potíží s DAC, SQL Server si vyhrazuje omezené prostředky pro zpracování příkazů spuštěných v DAC. Tyto prostředky obvykle stačí jenom pro jednoduché funkce diagnostiky a řešení potíží, jako jsou ty uvedené níže.
I když můžete teoreticky spustit jakýkoli příkaz Transact-SQL, který se nemusí paralelně spouštět v DAC, důrazně doporučujeme omezit použití na následující příkazy diagnostiky a řešení potíží:
Dotazování zobrazení dynamické správy pro základní diagnostiku, jako je sys.dm_tran_locks stavu uzamčení, sys.dm_os_memory_cache_counters ke kontrole stavu mezipamětí a sys.dm_exec_requests a sys.dm_exec_sessions pro aktivní relace a požadavky. Vyhněte se zobrazením dynamické správy, která jsou náročná na prostředky (například sys.dm_tran_version_store prohledává úplné úložiště verzí a může způsobit rozsáhlé vstupně-výstupní operace) nebo která používají složitá spojení. Informace o dopadech na výkon najdete v dokumentaci ke konkrétnímu zobrazení dynamické správy.
Dotazování zobrazení katalogu
Základní příkazy DBCC, jako jsou DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS a DBCC SQLPERF. Vyhněte se příkazům náročným na prostředky, jako jsou DBCC CHECKDB, DBCC DBREINDEX nebo DBCC SHRINKDATABASE.
KILL <spid>Transact-SQL příkaz. V závislosti na stavu SQL ServeruKILLnemusí být příkaz úspěšný. Jedinou možností může být restartování instance v případě SQL Serveru nebo azure SQL Managed Instance. Tady jsou některé obecné pokyny:Ověřte, že identifikátor SPID byl zabit dotazem
SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>;. Pokud nevrátí žádné řádky, znamená to, že relace byla zabita.Pokud je relace stále k dispozici, ověřte, zda jsou k této relaci přiřazeny úkoly spuštěním dotazu
SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>;. Pokud tam vidíte úkol, pravděpodobně se vaše relace právě ukončí. To může trvat značné množství času a nemusí vůbec proběhnout úspěšně.Pokud v
sys.dm_os_taskstéto relaci nejsou žádné úkoly, ale relace zůstanesys.dm_exec_sessionspo spuštěníKILLpříkazu, znamená to, že nemáte k dispozici pracovní proces. Vyberte jeden z aktuálně spuštěných úkolů (úkol uvedený vsys.dm_os_taskszobrazení s )sessions_id <> NULLa ukončete relaci přidruženou k ní, aby se uvolnil pracovní proces. Možná nebude stačit k ukončení jedné relace: možná budete muset zabít více relací.
Omezení ve službě Azure SQL Database
Při připojování ke službě Azure SQL Database pomocí daC musíte také zadat název databáze v připojovacím řetězci pomocí -d této možnosti.
Omezení ve službě Azure SQL Managed Instance
DAC nefunguje přes privátní koncový bod pro službu Azure SQL Managed Instance. Ve spravovaných instancích SQL naslouchá DAC na portu 1434. Vzhledem k tomu, že privátní koncové body ke spravovaným instancím SQL umožňují připojení jenom na portu 1433, nemůžete k navázání připojení DAC použít privátní koncový bod. Abyste se mohli připojit pomocí DAC, musíte být ve stejné virtuální síti jako spravovaná instance SQL.
Examples
V tomto příkladu si správce všimne, že server contoso-server nereaguje a chce problém diagnostikovat. K tomu uživatel aktivuje nástroj příkazového sqlcmd řádku a připojí se k serveru contoso-server pomocí indikce -A DAC.
sqlcmd -S contoso-server -U sa -P <StrongPassword> -A
Správce teď může spouštět dotazy k diagnostice problému a případně ukončit nereagující relace.
Podobný příklad připojení ke službě SQL Database by použil následující příkaz, včetně parametru -d k určení databáze:
sqlcmd -S serverName.database.windows.net,1434 -U sa -P <StrongPassword> -d AdventureWorks
Související obsah
- Použití sqlcmd se skriptovacími proměnnými
- Nástroj sqlcmd
- SELECT (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)
- možnosti konfigurace serveru
- Zobrazení a funkce dynamické správy související s transakcemi (Transact-SQL)
- Nastavení příznaků trasování pomocí DBCC TRACEON (Transact-SQL)