Have you ever thought how Dedicated Administrator Connection (DAC) allow you to connect to SQL Server even when it cannot accept standard connection requests?
DAC is a special type of diagnostic connection, introduced by Microsoft as a new feature in SQL Server 2005.
SQL Server reserves a minimum amount of memory and a private scheduler using which it allows you to connect in situations when you need it.
You need to use a login which is a member of the SQL Server sysadmin role to use DAC and for obvious reasons only one such session is allowed at any point of time.
By default DAC is enabled locally except in SQL Express edition. That means if you are able to RDP to the server and want to use DAC to connect to the local SQL Instance, you will be able to do so even when DAC is not enabled explicitly.
Go ahead and watch this video showing what I am talking about:
In SQL Express you need to add “-T7806” to the startup parameters and restart SQL Services. Also SQL Browser Service should be running.
Then why Microsoft has provided the option to enable DAC? In situations OS can be completely exhausted of resources to handle any further user connections which prevents using DAC locally.
That is why you have the configuration settings “remote admin connections” to allow DAC from a remote machine.
There are two ways to enable DAC:
- Using Query
- GUI (Management Studio)
1. Using Query to set the configuration settings:
EXEC sp_configure 'remote admin connections', 1 GO RECONFIGURE GO
The message says “Run the RECONFIGURE statement to install”. This is little misleading as we have run that already. No need to run it again.
You can verify by executing the following query:
EXEC sp_configure 'remote admin connections'
As you can see in the above screen shot, both config_value and run_value has been set to 1. Otherwise run_value would have been ‘0’.
2. Using Management Studio:
Right Click on SQL Server Instance > Facets as shown below.
Choose Surface Area Configuration and make “RemoteDacEnabled” to True.
Now your SQL Instance is ready to allow DAC from remote machine.
There are two ways you can connect to SQL Instance using DAC:
- Command Prompt
- GUI (SQL Server Management Studio)
1. Command prompt:
Commands to connect using DAC:
a. To use SQL Authentication
sqlcmd -S [ServerName] -U [ltloginname] -P [Password] –A
b. To use Windows Authentication which will use the login id you are connected with:
sqlcmd –S [ServerName] -A
To connect to default SQL instance using windows authentication:
sqlcmd -S (local) –A
Or you can just use a (.) dot:
To connect named instance using SQL Authentication:
Note: In the above example the last letter is in lower case (-p), to prompt for password. If you want to mention the password in the command line itself then if is upper case (-P).
2. GUI (SQL Server Management Studio):
Go to File > New > Database Engine Query as shown below
Alternatively you can click on the icon as shown below:
This is important to use Database Engine Query, otherwise you will get error as explained later in this article.
Type Admin:SQLInstanceName for the Server Name field name as shown below:
You can use either SQL Authentication or Windows Authentication.
If you do not pay attention to use “Database Engine Query” you will get the below error message:
In this article you have learned what DAC is and how it allows the special connection, different ways to enable DAC and different ways to connect.
I would love to hear from you if you have any questions and yes I hope you have gone through the topic of Myth around Remote Query Timeout Option