2 新葡京32450网址专用管理员连接有什么用,对于DAC使用的一般情况

发布时间:2019-08-15  栏目:数据  评论:0 Comments

通过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 myServer\InstanceName -U myUser -P myPassword
sqlcmd -S xxx.xxx.xxx.xxx\InstanceName -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 myServer\InstanceName -U myUser -P myPassword -A
sqlcmd -S xxx.xxx.xxx.xxx\InstanceName -U myUser -P myPassword -A
sqlcmd -S ADMIN:myServer\InstanceName -U myUser -P myPassword
sqlcmd -S ADMIN:xxx.xxx.xxx.xxx\InstanceName -U myUser -P myPassword

经测试确认,以上4种连接方式都是OK的。注意一点,对于InstanceName的解析是服务器上的“SQL Server Browser”进行的,如果这个服务不在运行,DAC的访问是要失败的。流程是:Browser根据“myServer\InstanceName”或者“xxx.xxx.xxx.xxx\InstanceName”找到你要访问的实例,然后根据“-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.通过端口访问的这条路我没能走通。

使用 DAC 连接

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

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

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

问题(4)

文章出处:

作者:lansz | 可以转载,
转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
链接:
问题:
在使用SQL Server
2000的时候,大家可能已经很习惯用下面的语句在修改系统表了
EXEC sp_configure ‘allow updates’, 1
RECONFIGURE WITH OVERRIDE;

— do some modification to system tables

EXEC sp_configure ‘allow updates’, 0
RECONFIGURE WITH OVERRIDE;但是如果在SQL Server
2005中,你还是想通过运行上面的语句来修改系统表,那你就大错特错了,虽然在SQL
Server
2005中运行上面的语句是不会有任何报错的,但是但你试图去修改系统表的时候你会得到下面这样的错误信息:
Msg 259, Level 16, State 1, Line 1
Ad hoc updates to system catalogs are not allowed.这时候你只要在SQL
Server 2005的BOL中查一下”allow updates”你就会发现如下的说明:
allow updates Option

Updated: 14 April 2006

This option is still present in the sp_configure stored procedure,
although its functionality is unavailable in Microsoft SQL Server 2005
(the setting has no effect). In SQL Server 2005, direct updates to the
system tables are not supported.看来在SQL Server 2005中allow
updates只是一个摆设了,根本不能用,而且系统表也不能直接被修改了。但是如果你确实需要修改系统表那怎么办呢?
还好,Microsoft还是没有做绝的,虽然allow
updates不能用了,但还是可以通过别的途径修改系统表,那就是:先用单用户模式启动SQL
Server 2005实例,然后再用DAC(Dedicated Administrator
Connection/专用管理员连接)连接到SQL实例,然后不用运行什么sp_configure就可以直接修改系统表了。
基本的步骤:
1、启动到单用户模式
“C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Binn\sqlservr.exe” -m2、打开SQL Server
Management Studio,在Connect to Server对话框中的Server
Name处输入admin:InstanceName,这样就可以用DAC登陆启动的SQL
Server实例了。
友情提示:
另外,SQL Server
2005加强了字典管理功能,如果要修改系统表的操作能有存储过程支持的情况下一定要用存储过程,不要去直接修改系统表,以维护数据字典的一致性。
参考资料:
1、allow updates Option
2、Using a Dedicated Administrator Connection
3、Starting SQL Server in Single-User Mode

================================================================
如何使用SQL Server 2005 专用管理员连接(DAC)登录到服务器
一 什么是DAC SQL Server 2005
为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。即使在
SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL
Server,以便执行诊断查询并解决问题。命令行界面 (sqlcmd)
通过使用特殊的管理员开关 (-A),提供并支持这种专用管理员连接
(DAC)。二如何使用DAC登录到服务器1 本机DAC登录 命令行方式下执行 sqlcmd -A
-S sql服务器名2 远程DAC登录 1) 打开远程DAC选项 ‘程序’->’Sql
Server2005′-> ‘配置工具’-> ‘Sql Server 外围应用配置器’->
‘功能的外围应用配置器’-> ‘DataBase Engine’-> ‘DAC’ ->
‘启用远程DAC’ 2) 登录到远程服务器 sqlcmd -A -S 192.168.0.1 -U sa -P
1234563 登录后, 可以通过查询动态管理视图来诊断问题

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

DAC 端口

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

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

对于群集配置,DAC 在默认情况下是禁用的。用户可以执行 sp_configure
remote 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

不支持专用管理员连接。 (ObjectExplorer)
解决:

标题: 连接到服务器

--以下的形式都可以访问
sqlcmd -S myServer -U myUser -P myPassword -A
sqlcmd -S ADMIN:myServer -U myUser -P myPassword
sqlcmd -S myServer,1434 -U myUser -P myPassword
sqlcmd -S xxx.xxx.xxx.xxx -U myUser -P myPassword -A
sqlcmd -S xxx.xxx.xxx.xxx,1434 -U myUser -P myPassword

说明:
a) sqlcmd命令行中参数与参数值之间可以有空格也可以没有;如果你的密码中有空格,你可以用双引号把你的密码引起来;
b) sqlcmd命令中的“-S”其实也可以用"/S",其它参数也一样;
c) 1434是SQL Server连接的默认端口号;
d) 在服务器前加"ADMIN:"也是为了指定进行DAC连接;
e) “-A”是在sqlcmd命令行中指定DAC连接的参数;
f) "-A","ADMIN:",",1434"不能在一条命令中出现两个或以上,否则会报错;
g) 不在命令行中加入这3个参数("-A","ADMIN:",",1434")的任何一个,登录也能成功,差别在于你使用的连接是普通连接,不是DAC连接。一般来说,普通连接能用的资源更多,但是当系统性能出现严重问题的时候普通连接可能没法建立,这也是引入DAC的初衷;再就是DAC连接下能看到一些有助于诊断的秘密视图(参见上面推荐的第一个blog)。

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

6 常用脚本
–利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
— 查询动态视图
select * from sys.dm_os_memory_cache_counters
select * from sys.dm_exec_requests
select * from sys.dm_exec_sessions
— 结束会话
KILL <spid>
select * from sys.dm_exec_sessions where session_id = <spid>
select * from sys.dm_os_tasks where session_id = <spid>

无法连接到 ADMIN:QIANGGUO\ODS。

其他信息:
已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: TCP
提供程序, error: 0 – 远程主机强迫关闭了一个现有的连接。)
(Microsoft SQL Server,错误: 10054)

解决:已经建立一个DAC连接,请先关闭后,再连接。

我通过测试得到的结论是:对于单机单SQL Server实例,使用非默认端口时候的DAC访问跟使用默认端口1433时候完全一样。网上的一些论坛说要确保“SQL Server Browser”在运行,似乎不是必要的,至少我测试(用的SQL Server 2008 R2 SP3)过程中“SQL Server Browser”是不是在运行不影响访问。

示例

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

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

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


Server 2005 专用管理员连接 (DAC) 使用技巧
1 什么是专用管理员连接?
SQL Server 2005
为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。
2 专用管理员连接有什么用?
即使在 SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL
Server,以便执行诊断查询并解决问题。
管理员可以通过 DAC 访问正在运行的 SQL Server Database Engine
实例来排除服务器的故障(即使该服务器已停止响应其他客户端连接)。
3 专用管理员连接使用方法 (1)利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
(2)SQL Server Management Studio 查询编辑器启动 DAC
admin:<实例名>
如:ADMIN:QIANGGUO\ODS
4 专用管理员连接使用限制 (1)为了保证有可用的连接资源,每个 SQL Server 实例只允许使用一个
DAC。如果 DAC 连接已经激活,则通过 DAC
进行连接的任何新请求都将被拒绝,并出现错误 17810。
(2)DAC
最初尝试连接到与登录帐户关联的默认数据库。连接成功后,可以连接到 master
数据库。如果默认数据库离线或不可用,则连接返回错误
4060。但是,如果使用以下命令覆盖默认数据库,改为连接到 master
数据库,则连接会成功:
sqlcmd –A –d master
由于只要启动数据库引擎 实例,就能保证 master
数据库处于可用状态,因此建议使用 DAC 连接到 master 数据库。
(4)SQL Server 禁止使用 DAC 运行并行查询或命令。例如,如果使用 DAC
执行以下任何命令,都会生成错误 3637。
RESTORE或BACKUP
(5)DAC 只能使用有限的资源。请勿使用 DAC
运行需要消耗大量资源的查询(例如,对大型表执行复杂的联接)或可能造成阻塞的查询。这有助于防止将
DAC
与任何现有的服务器问题混淆。为避免潜在的阻塞情况,当需要运行可能造成阻塞的查询时,
请尽可能在基于快照的隔离级别下运行查询;否则,请将事务隔离级别设置为
READ UNCOMMITTED 和/或将 LOCK_TIMEOUT 值设置为较短的值(如 2000
毫秒)。这可以防止 DAC 会话被阻塞。
但是,根据 SQL Server 所处的状态,DAC 会话可能会在闩锁上被阻塞。可以使用
CNTRL-C 终止 DAC
会话,但不能保证一定成功。如果失败,唯一的选择是重新启动 SQL Server。
为保证连接成功并排除 DAC 故障,SQL Server 保留了一定的资源用于处理 DAC
上运行的命令。通常这些资源只够执行简单的诊断和故障排除功能,如下所示。
为了保留资源,DAC 连接在 SQL Server 2005 Express Edition 中不可用。
5 如何启用远程DAC连接? 只有 SQL Server sysadmin 角色的成员可以使用 DAC
连接。默认情况下,只能从服务器上运行的客户端建立连接。除非通过
sp_configure 使用 remote admin connections
选项进行配置,否则不允许使用网络连接。
DAC 支持加密和 SQL Server 的其他安全性功能。DAC
只允许将用户上下文切换到其他管理用户。
默认情况下,DAC 仅侦听环回 IP 地址 (127.0.0.1) 端口 1434。
remote admin connections 设置的可能值如下:
0 – 指明仅允许本地连接使用 DAC
1 – 指明允许远程连接使用 DAC
–启用远程DAC连接
sp_configure ‘remote admin connections’, 1;
GO
RECONFIGURE;
GO
注意:配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL
Server,并且客户端可以立即远程连接到 DAC。
6 常用脚本 –利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
— 查询动态视图
select * from sys.dm_os_memory_cache_counters
select * from sys.dm_exec_requests
select * from sys.dm_exec_sessions
— 结束会话
KILL <spid>
select * from sys.dm_exec_sessions where session_id = <spid>
select * from sys.dm_os_tasks where session_id = <spid>
7 常见错误 问题(1)
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods,1434
HResult 0x274D,级别 16,状态 1
TCP 提供程序: 由于目标机器积极拒绝,无法连接。
Sqlcmd: 错误: Microsoft SQL Native Client :
建立到服务器的连接时发生错误。连接到
SQL Server 2005 时,默认设置 SQL Server
不允许远程连接这个事实可能会导致失败。

Sqlcmd: 错误: Microsoft SQL Native Client : 登录超时已过期。
解决:
问题(2)
标题: 连接到服务器——————————

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

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

5 如何启用远程DAC连接?
只有 SQL Server sysadmin 角色的成员可以使用 DAC
连接。默认情况下,只能从服务器上运行的客户端建立连接。除非通过
sp_configure 使用 remote admin connections
选项进行配置,否则不允许使用网络连接。
DAC 支持加密和 SQL Server 的其他安全性功能。DAC
只允许将用户上下文切换到其他管理用户。
默认情况下,DAC 仅侦听环回 IP 地址 (127.0.0.1) 端口 1434。
remote admin connections 设置的可能值如下:
0 – 指明仅允许本地连接使用 DAC
1 – 指明允许远程连接使用 DAC
–启用远程DAC连接
sp_configure ‘remote admin connections’, 1;
GO
RECONFIGURE;
GO
注意:配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL
Server,并且客户端可以立即远程连接到 DAC。

无法连接到 ADMIN:QIANGGUO\ODS。

其他信息:
不支持专用管理员连接。 (ObjectExplorer)
解决:
问题(3)
C:\Documents and Settings\guoqiang>sqlcmd -Sadmin:qiangguo\ods
Sqlcmd: 错误: Microsoft SQL Native Client :
由于打开服务器连接过程中的延迟,无法
完成登录过程。
解决:试着不用DAC 连接,用正常的连接成功后,再用DAC连接。
如:
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
Sqlcmd: 错误: Microsoft SQL Native Client :
由于打开服务器连接过程中的延迟,无法
完成登录过程。
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods
1> quit
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
1>
问题(4)

相关文章

留下评论

网站地图xml地图