技术知识库

帮助中心 >  产品文档 >  数据库 >  SQLSERVER数据库管理员的专用连接DAC

DACDedicated Admin Connection

SQL Server因系统资源不足,或其它异常导致无法建立数据库连接时,可以使用系统预留的DAC连接到数据库,进行一些问题诊断和故障排除。DAC只能使用有限的资源。请勿使用DAC运行需要消耗大量资源的查询,否则可能发生严重的阻塞。

 

如何启用DAC功能 专用管理员连接功能以及注意事项

1.         、只有系統管理員(sysadmin)角色相關成員可以使用DAC連接存取SQL Server(Local)本地连接;

2.         一個執行個體只能存在一個DAC

3.         使用DAC通常是讓DBA查詢和排解SQL Server問題(當無法正常連接執行個體)

4.         好比執行sp_who2Kill SPIDDBCC SQLPERFDBCC DROPCLEANBUFFERS …,使用DAC連接時,切勿執行需耗費大量資源的命令,如DBCC CHECKDBDBCC SHRINKDATABASE..等;

5.         使用DAC登录才能修改系统表或者查看系统表,以前SQL2000的时候你可以随便修改系统表,到了SQL2005就开始限制了。

 

开启DACSQL

USE master       

GO       

sp_configure 'show advanced options', 1

GO   

sp_configure 'remote admin connections', 1

GO       

RECONFIGURE WITH OVERRIDE   

GO

SELECT *  FROM sys.configurations where name = 'remote admin connections'

 

也可以在外围应用配置器那里开启

blob.png

 

命令行下使用DAC登录

sqlcmd加上 /A 选项  专用管理连接
sqlcmd /S  JOE  /E  /A
1>DBCC DROPCLEANBUFFERS
2>GO

 

排错和诊断的SQL

SELECT * FROM sys.dm_tran_locks

SELECT * FROM sys.dm_os_memory_cache_counters

SELECT * FROM sys.dm_exec_requests

SELECT * FROM sys.dm_exec_sessions

例如查询 sys.dm_tran_locks 以了解锁定状态

查询 sys.dm_os_memory_cache_counters ,检查缓存数量

查询sys.dm_exec_requests sys.dm_exec_sessions 以了解活动的会话和请求。

避免使用需要消耗大量资源的 DMV(例如,sys.dm_tran_version_store 需要扫描整个版本存储区,并且会导致大量的 I/O)或使用了复杂联接的 DMV

sqlserver management studio中使用DAC连接的时候,要选择新建查询或者数据库引擎查询,不能使用一上来默认的那个登录框进行DAC连接登录,那个是连接数据库引擎的,如果用DAC连数据库引擎,会报不支持DAC连接。

blob.png

blob.png

 

下面说一下DAC侦听的端口号

若要了解 DAC 所侦听的端口号,可以看SQL错误日志。

SQL错误日志

消息

Dedicated admin connection support was established for listening remotely on port 1434.

其他有关DAC错误日志的消息:

 

消息

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. [客户端: 127.0.0.1]

 

消息

Configuration option 'remote admin connections' changed from 1 to 1. Run the RECONFIGURE statement to install

 

DAC的本地连接和远程连接的方式:

如果将 SQL Server 配置为接受远程管理连接,则必须使用显式端口号启动 DAC

sqlcmd –Stcp:<server>,<port>

sqlcmd /Stcp:192.168.1.100,1434 /U sa /P test

 

SQL Server 错误日志列出了 DAC 的端口号,默认情况下为 1434

如果将 SQL Server 配置为只接受本地 DAC 连接,请使用以下命令和环回适配器进行连接:

sqlcmd –S127.0.0.1,1434

或者

sqlcmd加上 /A 选项  专用管理连接
sqlcmd /S  JOE  /E  /A

或者

blob.png

或者

blob.png

总结:发现无论你是用sqlcmd或者SSMS,本地连接还是远程连接,都要使用这种方式

sqlcmd –Stcp:<server>,<port>

本地:sqlcmd –S127.0.0.1,1434

远程:sqlcmd /Stcp:192.168.1.100,1434 /U sa /P test

网上有些文章说不用加端口号,启用SQL Browser服务,就可以连接SQLSERVER,实际上不加1434端口号的话,已经不是在使用DAC来连接SQLSERVER了,不加1434端口号使用的只是普通连接。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: