Dedicated Admin Connection (DAC) – The Good Samaritan

-> Users can use DAC connection to troubleshoot issues by executing diagnostics queries when normal connections to SQL Server Instance is not working.

-> I used DAC connection recently to solve a blocking issue. Application upgrade was performed and it was running for close to 13 hours. Application team advised that the upgrade is hung since it is not able to make any connections to SQL server. We tried connecting to SQL Server and we were not able to make a connection to SQL Server. I used DAC connection to this SQL Server instance and was able to identify blocking issues involving several processes. I terminated the head blocker and the application upgrade continued without issues and completed. Without DAC, only option would be to restart SQL Server and that would have been very bad as the application upgrade was more than 95% complete.

Enable DAC

-> Lets check if DAC is enabled on the SQL Server Instance.

-> It is not enabled. Lets enable it using below query.


sp_configure 'remote admin connections',1
RECONFIGURE

Connect to SQL Server Instance using DAC via SQLCMD

-> Below query can be used to connect to SQL Server instance using DAC,

sqlcmd -SDESKTOP-H3PO3LJ\IN2019 -E -dmaster -A

-> When executed, I got below error,

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : SQL Server Network Interfaces: An error occurred while obtaining the dedicated administrator connection (DAC) port. Make sure that SQL Browser is running, or check the error log for the port number [xFFFFFFFF]. .
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

-> SQL server browser services is not running. Alternatively you can provide the port number directly. Starting the browser services allowed me to connect to SQL Server using DAC,

Connect to SQL Server Instance using DAC via SQL Server Management Studio

-> DAC connection cannot be made using Object Explorer on SQL Server Management studio. You will receive below error,

TITLE: Connect to Server
Cannot connect to ADMIN:DESKTOP-H3PO3LJ\IN2019.
ADDITIONAL INFORMATION:
Dedicated administrator connections are not supported via SSMS as it establishes multiple connections by design. (Microsoft.SqlServer.Management.SqlStudio.Explorer)

-> But you can open a single query window and then connect using DAC as below,

How many DAC Connections are possible on a Single SQL Server Instance

-> Lets try connecting to DAC one more time from a different command prompt,

-> You may get below error in Command Prompt when trying to connect to SQL Server using SQLCMD,

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection because an error was encountered during handshakes before login. Common causes include client attempting to connect to an unsupported version of SQL Server, server too busy to accept new connections or a resource limitation (memory or maximum allowed connections) on the server..
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: An existing connection was forcibly closed by the remote host..
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection due to prelogin failure.

-> You may get below error in SQL Server Management Studio ,

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 – An established connection was aborted by the software in your host machine.) (Microsoft SQL Server, Error: 10053)

An established connection was aborted by the software in your host machine

-> I get below error on Application log within Eventvwr,

Log Name: Application
Source: MSSQL$IN2019
Date: 08-04-2021 21:05:58
Event ID: 17810
Task Category: Logon
Level: Error
Keywords: Classic
User: N/A
Computer: DESKTOP-H3PO3LJ
Description:
Could not connect because the maximum number of ‘1’ dedicated administrator connections already exists. Before a new connection can be made, the existing dedicated administrator connection must be dropped, either by logging off or ending the process. [CLIENT: 127.0.0.1]

-> So it is clear we can have only one DAC connection on a SQL Server Instance.

-> This issue happens so frequently on production environment where someone else has used the DAC connection but forgot to close it after use.

Which User Session is using DAC connection

-> You can use below query to check who has taken the DAC connection,

SELECT syssession.login_name, syssession.session_id, syssession.status, sysend.name
from sys.endpoints as sysend join sys.dm_exec_sessions syssession on sysend.endpoint_id=syssession.endpoint_id
where sysend.name like 'Dedicated%'

Final Thoughts

-> It is recommended to enable DAC on all SQL Server Instances. It is sure to help during emergency.

Thank You,
Vivek Janakiraman

Disclaimer:
The views expressed on this blog are mine alone and do not reflect the views of my company or anyone else. All postings on this blog are provided “AS IS” with no warranties, and confers no rights.

Leave a Reply