首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么知道什么需要DAC?

我怎么知道什么需要DAC?
EN

Database Administration用户
提问于 2017-12-17 09:24:55
回答 1查看 685关注 0票数 3

在玩Server时,我遇到了一个半隐错误。基本上,我只需要登录DAC。对于什么时候需要发援会有什么一般性的建议吗?我如何知道我需要它来访问sys.sysobjvalues,而无需搜索错误消息?

发援会提供什么访问权?

EN

回答 1

Database Administration用户

发布于 2017-12-17 11:34:21

DAC (专用管理连接)仅用于故障排除目的(一个元数据工具)。如果无法访问或连接到Server,则SQL Server DBA将其用作最后手段。在某些情况下,一个进程或某个人试图使用您所有的系统内存和CPU,而没有人可以使用Server (没有新的进程可以连接)。

DAC是在Server 2005中构建的,因为在Server 2005之前,如果我们无法访问/连接到Server,则可以关闭所有会话并重新启动Server。在Server 2005中,Microsoft决定创建DAC,用于故障排除(后门)。

当我们连接为DAC (特殊连接)时,我们有专用处理器(调度器)和一个预留内存来运行一个简单的查询。我们需要一个系统管理员的权限来连接。我们只能通过登录到本地服务器并进行连接来在本地进行连接(除非您需要对需要远程DAC的集群或AGs进行故障排除)。在SQL Server中只有一个可以作为DAC连接的会话,在我们断开DAC会话之前,没有人可以作为DAC连接。

我们可以通过查询来检查是否有人在使用DAC:

代码语言:javascript
复制
SELECT dese.session_id
FROM sys.tcp_endpoints as te
JOIN sys.dm_exec_sessions as dese ON te.endpoint_id = dese.endpoint_id
WHERE te.name ='Dedicated Admin Connection';

当我们作为发援会连接时,我们能做些什么:

  1. 对隐藏系统表的访问(如sys.sysobjvalues)
  2. 运行简单的疑难解答查询
  3. 高级故障排除(如修复损坏的系统表页)

我们不能做的是:

  1. 运行复杂查询(禁止并行)
  2. 备份/恢复操作

我们不能在正常连接中查询系统表。

试一试

代码语言:javascript
复制
SELECT * FROM sys.objects WHERE type_desc='SYSTEM_TABLE';

。这些表是在正常连接中无法查询的。

当我们作为DAC连接时,您可以访问系统表(例如。sys.sysrscols)

最后,作为一种最佳做法,始终在使用后断开DAC连接。

我建议使用SSMS阅读有关服务器内部结构的书服务器故障排除。它不是特定于Server 2017,但大多数概念仍然适用于当前版本的Server。

来自微软

重要事项:系统基表仅在Server数据库引擎中使用,不适合一般客户使用。它们可能会发生变化,兼容性也得不到保证。使用DAC访问系统基表是为Microsoft人员设计的,并不是受支持的客户场景。

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/193336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档