金沙澳门官网网址-澳门金沙官网登录

金沙澳门官网网址拥有大量的原创内容,澳门金沙官网登录提供最权威、快速、全面、专业的报道,所以金沙澳门官网网址注册送彩金就相当于直接送现金了,享受最尊贵的贵宾服务。

管理员也可以使用此诊断连接访问 SQL,对于DAC使

2019-09-27 04:59栏目:金沙澳门官网
TAG:

3)单机多SQL Server实例

SQL Server 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。即使在 SQL Server 不响应标准连接请求时,管理员也可以使用此诊断连接访问 SQL Server,以便执行诊断查询并解决问题。

2)单机单SQL Server实例,SQL Server实例使用非默认端口

SQL Server 尽力使 DAC 连接成功,但在非常特殊的情况下也可能会出现连接失败。

通过DAC来访问单机多SQL Server实例的情况要复杂一些。上面的几条命令行在这种情况下都会失效。原因在两个:
a) DAC访问是实例级别的,服务端得有办法知道你要访问的是哪个实例;
b) 在单机多实例的情况下监视DAC访问的是随机端口,而不再是默认的1434(当然,具体的端口号在SQL Server启动的时候是确定的,可以在SQL Server启动的Log中找到:打开SSMS--->连接到数据库实例--->Management--->SQL Server Logs--->Current,在里面找到类似”Dedicated admin connection support was established for listening locally on port 50458.“)

--怎么破?
我们在访问数据库引擎的时候,碰到单机多实例的情况有两种办法,一种是在配置S参数的时候加上实例名,一种是加实例端口号。命令行的形式类似下面:
sqlcmd -S myServerInstanceName -U myUser -P myPassword
sqlcmd -S xxx.xxx.xxx.xxxInstanceName -U myUser -P myPassword
sqlcmd -S myServer,6xxx -U myUser -P myPassword
sqlcmd -S xxx.xxx.xxx.xxx,6xxx -U myUser -P myPassword

先从实例名着手:
sqlcmd -S myServerInstanceName -U myUser -P myPassword -A
sqlcmd -S xxx.xxx.xxx.xxxInstanceName -U myUser -P myPassword -A
sqlcmd -S ADMIN:myServerInstanceName -U myUser -P myPassword
sqlcmd -S ADMIN:xxx.xxx.xxx.xxxInstanceName -U myUser -P myPassword

经测试确认,以上4种连接方式都是OK的。注意一点,对于InstanceName的解析是服务器上的“SQL Server Browser”进行的,如果这个服务不在运行,DAC的访问是要失败的。流程是:Browser根据“myServerInstanceName”或者“xxx.xxx.xxx.xxxInstanceName”找到你要访问的实例,然后根据“-A”或者“ADMIN:”找到你要访问的端口。

既然这样可以进行DAC访问,那用类似访问数据库引擎的方式,把上面命令中的“InstanceName”改成",xxxx"格式的端口号是不是也行呢?
sqlcmd -S myServer,xxxx -U myUser -P myPassword -A
sqlcmd -S xxx.xxx.xxx.xxx,xxxx -U myUser -P myPassword -A
sqlcmd -S ADMIN:myServer,xxxx -U myUser -P myPassword
sqlcmd -S ADMIN:xxx.xxx.xxx.xxx,xxxx -U myUser -P myPassword

如果你在几个命令行中配的端口号跟访问数据库引擎时候配置的端口号是一样的话,答案是不行。原因在哪里呢?那个端口是数据库引擎的访问端口,并不是被监听的DAC端口,因为不在一个频道上DAC还不知道你想访问。我的理解,在命令行中指定了端口号的情况下,Browser认为那就是你想访问的端口,结果因为它并不是那个随机的DAC端口而导致了失败。

DAC访问侦听跟数据库引擎一样,从根本上来说也是一个tcp服务(关于这一点你可以查看sys.endpoints来确认)。是服务,我们如果能知道它侦听的端口号就应该能解决问题。但不幸也在这儿,如上面b)所说,在单机多实例的情况下这个被监听的端口是随机的。视图sys.endpoints是能查到当前SQL Server实例上的tcp服务信息的,每个endpoint都有一条记录,比如你就能在这里查到用于镜像的5022,但遗憾的是对于DAC,端口那一列却显示的是0.通过端口访问的这条路我没能走通。

示例

在此示例中,管理员发现服务器 URAN123 不响应,因此要诊断该问题。为此,用户激活 sqlcmd 命令提示实用工具,并使用 -A 指明 DAC 连接到服务器 URAN123

sqlcmd -S URAN123 -U sa -P <xxx> –A

现在,管理员可以执行查询来诊断问题,并且可以终止停止响应的会话。

5)如何确认当前是DAC连接还是普通连接

此专用管理员连接 (DAC) 支持 SQL Server 的加密功能和其他安全功能。DAC 只允许将用户上下文切换到其他管理用户。

DAC(Dedicated Admin Connection)是SQL Server 2005引入的一个东西,目的是在SQL Server发生严重性能问题的时候仍保留有限的资源保证管理员能够执行一些简单的命令用于问题诊断、释放资源、杀死肇事进程等。微软官方对DAC的说明:使用专用管理员连接.aspx)。对于DAC使用的一般情况,有两个不错的Blog值得推荐:

使用 DAC 连接

默认情况下,只能从服务器上运行的客户端建立连接。不允许进行网络连接,除非它们是使用带 的 sp_configure 存储过程配置的。

只有 SQL Server sysadmin 角色的成员可以使用 DAC 连接。

通过使用专用的管理员开关 (-A) 的 sqlcmd 命令提示实用工具,可以支持和使用 DAC。有关使用 sqlcmd 的详细信息,请参阅。您还可以将前缀 admin: 连接到实例名上,格式为 sqlcmd -Sadmin:*<instance_name>。还可以通过连接到 admin:<实例名金沙澳门官网网址 ,*>,从 SQL Server Management Studio 查询编辑器启动 DAC。

可以使用下面的SQL:
select s.session_id,
 s.login_time,
 s.login_name,
 s.host_name,
 p.endpoint_id,
 p.protocol_desc,
 p.name
from sys.dm_exec_sessions s
inner join sys.endpoints p on s.endpoint_id = p.endpoint_id

你可以从login_time,login_name,host_name来判断出哪一个是你当前的连接session,如果是DAC连接的话,你能从name列看到“Dedicated Admin Connection”。

DAC 端口

SQL Server 在启动数据库引擎时动态分配的专用 TCP/IP 端口上侦听 DAC。错误日志包含所侦听的 DAC 所在的端口号。默认情况下,DAC 侦听器只接受本地端口上的连接。有关激活远程管理员连接的代码示例,请参阅 。

配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL Server,并且客户端可以立即远程连接到 DAC。通过先在本地使用 DAC 连接到 SQL Server,然后再执行 sp_configure 存储过程接受远程连接,则即使 SQL Server 停止响应,DAC 侦听器仍然可以接受远程连接。

对于群集配置,DAC 在默认情况下是禁用的。用户可以执行 sp_configureremote admin connection 选项,使 DAC 侦听器能够访问远程连接。如果 SQL Server 停止响应并且未启用 DAC 侦听器,则可能必须重新启动 SQL Server 来连接 DAC。因此,建议在群集系统上启用 remote admin connections 配置选项。

DAC 端口由 SQL Server 在启动时动态分配。当连接到默认实例时,DAC 会避免在连接时对 使用 SQL Server 解决协议 (SSRP) 请求。它先通过 TCP 端口 1434 进行连接。如果失败,则通过 SSRP 调用来获取端口。如果 SQL Server 浏览器没有侦听 SSRP 请求,则连接请求将返回错误。若要了解 DAC 所侦听的端口号,请参阅错误日志。如果将 SQL Server 配置为接受远程管理连接,则必须使用显式端口号启动 DAC:

sqlcmd –Stcp:*<server>,<port>*

SQL Server 错误日志列出了 DAC 的端口号,默认情况下为 1434。如果将 SQL Server 配置为只接受本地 DAC 连接,请使用以下命令和环回适配器进行连接:

sqlcmd –S127.0.0.1,1434

版权声明:本文由金沙澳门官网网址发布于金沙澳门官网,转载请注明出处:管理员也可以使用此诊断连接访问 SQL,对于DAC使