Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Server biedt een speciale diagnostische verbinding voor beheerders wanneer standaardverbindingen met de server niet mogelijk zijn. Met deze diagnostische verbinding kan een beheerder toegang krijgen tot SQL Server om diagnostische query's uit te voeren en problemen op te lossen, zelfs wanneer SQL Server niet reageert op standaardverbindingsaanvragen.
Deze toegewezen beheerdersverbinding (DAC) ondersteunt versleuteling en andere beveiligingsfuncties van SQL Server. De DAC staat alleen het wijzigen van de gebruikerscontext toe aan een andere gebruiker met beheerdersrechten.
SQL Server probeert DAC verbinding te maken, maar in extreme situaties is het mogelijk niet gelukt.
Verbinding maken met DAC
Standaard is de verbinding alleen toegestaan vanaf een client die op de server wordt uitgevoerd. Netwerkverbindingen zijn niet toegestaan, tenzij ze zijn geconfigureerd met behulp van de sp_configure opgeslagen procedure met de serverconfiguratieoptie voor externe beheerdersverbindingen .
Alleen leden van de sql Server sysadmin-rol kunnen verbinding maken met behulp van de DAC.
De DAC is beschikbaar en wordt ondersteund via het sqlcmd opdrachtpromptprogramma met behulp van een speciale administratorswitch (-A). Zie sqlcmd voor meer informatie over het gebruik. U kunt ook voorvoegsel admin: koppelen aan de naam van het exemplaar in de indeling sqlcmd -S admin:<instance_name>. U kunt ook een DAC initiëren vanuit een SQL Server Management Studio-queryeditor door verbinding te maken met admin:<instance_name>.
Een DAC tot stand brengen vanuit SQL Server Management Studio:
Verbreek alle verbindingen met het gerelateerde SQL Server-exemplaar, inclusief objectverkenner en alle geopende queryvensters.
Selecteer bestand > nieuwe > database-enginequery in het menu
Voer
admin:<server_name>in het dialoogvenster Verbinding in het veld Servernaam in of u het standaardexemplaren gebruikt ofadmin:<server_name>\<instance_name>als u een benoemd exemplaar gebruikt.
DAC-poort
SQL Server luistert naar de DAC op TCP-poort 1434, indien beschikbaar of een TCP-poort die dynamisch is toegewezen bij het opstarten van database-engine. Het foutenlogboek bevat het poortnummer waarop de DAC luistert. De DAC-listener accepteert standaard alleen de verbinding op de lokale poort. Zie Serverconfiguratie: externe beheerdersverbindingen voor een codevoorbeeld waarmee externe beheerverbindingen worden geactiveerd.
Nadat de externe beheerverbinding is geconfigureerd, wordt de DAC-listener ingeschakeld zonder SQL Server opnieuw op te starten en kan een client nu extern verbinding maken met de DAC. U kunt de DAC-listener inschakelen om verbindingen op afstand te accepteren, zelfs als SQL Server niet reageert door eerst lokaal verbinding te maken met SQL Server en vervolgens de opgeslagen procedure uit te voeren om verbinding sp_configure van externe verbindingen te accepteren.
Bij clusterconfiguraties is de DAC standaard uitgeschakeld. Gebruikers kunnen de optie sp_configure voor externe beheerdersverbindingen uitvoeren om de DAC-listener toegang te geven tot een externe verbinding. Als SQL Server niet reageert en de DAC-listener niet is ingeschakeld, moet u SQL Server mogelijk opnieuw opstarten om verbinding te maken met de DAC. Daarom raden we u aan de configuratieoptie voor externe beheerdersverbindingen in te schakelen op geclusterde systemen.
De DAC-poort wordt dynamisch toegewezen door SQL Server tijdens het opstarten. Wanneer u verbinding maakt met het standaardexemplaren, vermijdt de DAC het gebruik van een SSRP-aanvraag (SQL Server Resolution Protocol) voor de SQL Server Browser Service wanneer u verbinding maakt. Het maakt eerst verbinding via TCP-poort 1434. Als dat mislukt, wordt er een SSRP-aanroep om de poort op te halen. Als SQL Server Browser niet luistert naar SSRP-aanvragen, retourneert de verbindingsaanvraag een fout. Raadpleeg het foutenlogboek om te zoeken op welk poortnummer DAC luistert. Als SQL Server is geconfigureerd voor het accepteren van externe beheerverbindingen, moet de DAC worden gestart met een expliciet poortnummer:
sqlcmd -S tcp:<server>,<port>
In het SQL Server-foutenlogboek wordt het poortnummer voor de DAC vermeld. Dit is standaard 1434. Als SQL Server is geconfigureerd om alleen lokale DAC-verbindingen te accepteren, maakt u verbinding met behulp van de loopback-adapter met behulp van de volgende opdracht:
sqlcmd -S 127.0.0.1,1434
Beperkingen
Omdat de DAC alleen bestaat voor het diagnosticeren van serverproblemen in zeldzame omstandigheden, zijn er enkele beperkingen voor de verbinding:
Om te garanderen dat er resources beschikbaar zijn voor de verbinding, is slechts één DAC toegestaan per exemplaar van SQL Server. Als een DAC-verbinding al actief is, wordt een nieuwe aanvraag om verbinding te maken via de DAC geweigerd met fout 17810.
Om middelen te besparen, luistert SQL Server Express niet naar de DAC-poort, tenzij gestart met de traceringsvlag 7806.
De DAC probeert in eerste instantie verbinding te maken met de standaarddatabase die is gekoppeld aan de aanmelding. Nadat de verbinding is gemaakt, kunt u verbinding maken met de
masterdatabase. Als de standaarddatabase offline is of anderszins niet beschikbaar is, retourneert de verbinding fout 4060. Het lukt echter wel als u de standaarddatabase overschrijft om in plaats daarvan verbinding te maken met demasterdatabase met behulp van de volgende opdracht:sqlcmd -A -d masterU wordt aangeraden verbinding te maken met de
masterdatabase met de DAC, omdatmasterhet gegarandeerd beschikbaar is als het exemplaar van de database-engine wordt gestart.SQL Server verbiedt het uitvoeren van parallelle query's of opdrachten met de DAC. Fout 3637 wordt bijvoorbeeld gegenereerd als u een van de volgende instructies uitvoert met de DAC:
RESTORE...BACKUP...
Alleen beperkte resources zijn gegarandeerd beschikbaar met de DAC. Gebruik de DAC niet om resource-intensieve query's of query's uit te voeren die andere query's kunnen blokkeren. Zo voorkomt u dat de DAC bestaande serverproblemen kan samenstellen. Om mogelijke blokkeringsscenario's te voorkomen, moet u, indien mogelijk, de query uitvoeren onder isolatieniveaus op basis van momentopnamen; anders stelt u het isolatieniveau
READ UNCOMMITTEDvan de transactie in op en stelt u deLOCK_TIMEOUTwaarde in op een korte waarde, zoals 2000 milliseconden, of beide. Hierdoor voorkomt u dat de DAC-sessie wordt geblokkeerd. Afhankelijk van de status waarin de SQL Server zich bevindt, kan de DAC-sessie echter worden geblokkeerd voor een vergrendeling. Mogelijk kunt u de DAC-sessie beëindigen met behulp van CTRL-C, maar dit is niet gegarandeerd. In dat geval is het mogelijk dat u SQL Server opnieuw start.Om connectiviteit en probleemoplossing met de DAC te garanderen, reserveert SQL Server beperkte resources voor het verwerken van opdrachten die worden uitgevoerd op de DAC. Deze resources zijn doorgaans slechts voldoende voor eenvoudige diagnostische en probleemoplossingsfuncties, zoals de onderstaande bronnen.
Hoewel u theoretisch elke Transact-SQL instructie kunt uitvoeren die niet parallel op de DAC hoeft uit te voeren, raden we u ten zeerste aan om het gebruik te beperken tot de volgende diagnostische en probleemoplossingsopdrachten:
Query's uitvoeren op dynamische beheerweergaven voor basisdiagnose, zoals sys.dm_tran_locks voor de vergrendelingsstatus, sys.dm_os_memory_cache_counters om de status van caches te controleren en sys.dm_exec_requests en sys.dm_exec_sessions voor actieve sessies en aanvragen. Vermijd dynamische beheerweergaven die resource-intensief zijn ( bijvoorbeeld sys.dm_tran_version_store scant het volledige versiearchief en kan uitgebreide I/O veroorzaken) of die complexe joins gebruiken. Zie de documentatie voor de specifieke dynamische beheerweergave voor informatie over de gevolgen voor de prestaties.
Query's uitvoeren op catalogusweergaven.
Eenvoudige DBCC-opdrachten zoals DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS en DBCC SQLPERF. Vermijd resource-intensieve opdrachten, zoals DBCC CHECKDB, DBCC DBREINDEX of DBCC SHRINKDATABASE.
KILL <spid>Transact-SQL opdracht. Afhankelijk van de status van SQL Server, lukt deKILLopdracht mogelijk niet. De enige optie is om het exemplaar opnieuw op te starten, in het geval van SQL Server of Azure SQL Managed Instance. Hier volgen enkele algemene richtlijnen:Controleer of de SPID is gedood door een query uit te voeren
SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>;. Als er geen rijen worden geretourneerd, betekent dit dat de sessie is gedood.Als de sessie nog steeds aanwezig is, controleert u of er taken zijn toegewezen aan deze sessie door de query
SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>;uit te voeren. Als u de taak daar ziet, wordt uw sessie waarschijnlijk gedood. Dit kan veel tijd in beslag nemen en kan helemaal niet lukken.Als er geen taken in de
sys.dm_os_tasksgekoppelde sessie zijn, maar de sessie blijft staansys.dm_exec_sessionsna het uitvoeren van deKILLopdracht, betekent dit dat u geen werkrol beschikbaar hebt. Selecteer een van de momenteel actieve taken (een taak die wordt vermeld in desys.dm_os_tasksweergave met eensessions_id <> NULL) en beëindig de sessie die eraan is gekoppeld om de werkrol vrij te maken. Het is misschien niet genoeg om één sessie te doden: misschien moet u meerdere sessies doden.
Beperking in Azure SQL Database
Wanneer u verbinding maakt met de Azure SQL Database met de DAC, moet u ook de databasenaam in de verbindingsreeks opgeven met behulp van de -d optie.
Beperking in Azure SQL Managed Instance
De DAC werkt niet via een privé-eindpunt voor Azure SQL Managed Instance. In beheerde SQL-exemplaren luistert de DAC op poort 1434. Omdat privé-eindpunten met met SQL beheerde exemplaren alleen verbindingen toestaan op poort 1433, kunt u geen privé-eindpunt gebruiken om een DAC-verbinding tot stand te brengen. U moet zich in hetzelfde virtuele netwerk bevinden als het met SQL beheerde exemplaar om verbinding te maken met DAC.
Voorbeelden
In dit voorbeeld ziet een beheerder dat de server contoso-server niet reageert en het probleem wil vaststellen. Hiervoor activeert de gebruiker het sqlcmd opdrachtpromptprogramma en maakt deze verbinding met de server contoso-server om -A de DAC aan te geven.
sqlcmd -S contoso-server -U sa -P <StrongPassword> -A
De beheerder kan nu query's uitvoeren om het probleem vast te stellen en de niet-reagerende sessies mogelijk te beëindigen.
Een vergelijkbaar voorbeeld dat verbinding maakt met SQL Database, gebruikt de volgende opdracht, inclusief de -d parameter om de database op te geven:
sqlcmd -S serverName.database.windows.net,1434 -U sa -P <StrongPassword> -d AdventureWorks
Verwante inhoud
- Sqlcmd gebruiken met scriptvariabelen
- sqlcmd Hulpprogramma
- 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)
- Serverconfiguratieopties
- Transactiegerelateerde dynamische beheerweergaven en -functies (Transact-SQL)
- Traceringsvlagmen instellen met DBCC TRACEON (Transact-SQL)