SQL Server 2006中等专业高校用管理员连接 (DAC) 使用技术&修改系统表的法子

下边包车型大巴两篇blog涉及到的骨干是DAC访问单机单实例的图景。本文试图对DAC访问单机多实例的景况也做个研究。

5)怎么着确认当前是DAC连接照旧常常连接

SQL Server 尽力使 DAC
连接成功,但在卓殊尤其的情景下也也许会现出连续败北。

伍 如何启用远程DAC连接?
只有 SQL Server sysadmin 角色的成员能够行使 DAC
连接。暗许境况下,只好从服务器上运维的客户端建立连接。除非通过
sp_configure 使用 remote admin connections
选项进行安插,不然不允许行使网络连接。
DAC 帮助加密和 SQL Server 的别样安全性功用。DAC
只允许将用户上下文切换来其余管理用户。
暗中同意情状下,DAC 仅侦听环回 IP 地址 (1②7.0.0.一) 端口 143四。
remote admin connections 设置的或是值如下:
0 – 指明仅同意本地连接使用 DAC
一 – 指明允许远程连接使用 DAC
–启用远程DAC连接
sp_configure ‘remote admin connections’, 1;
GO
RECONFIGURE;
GO
专注:配置远程管理连接之后,会应声启用 DAC 侦听器而不用再一次开动 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 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.通过端口访问的这条路我没能走通。
我通过测试得到的结论是:对于单机单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

现行反革命,管理员能够进行查询来会诊难点,并且能够告一段落结束响应的对话。

7 普遍错误
问题(1)
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods,1434
HResult 0x274D,级别 16,状态 1
TCP 提供程序: 由于指标机器积极拒绝,无法连接。

可以使用下面的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”。

3)单机多SQL Server实例

SQL Server
为总指挥提供了一种特有的确诊连接,以供在不大概与服务器建立正式连接时行使。即使在
SQL Server 不响应规范连接请求时,管理员也能够利用此检查判断连接待上访问 SQL
Server,以便执行检查判断查询并解决难题。

问题(2)
标题: 连接到服务器——————————

DAC(Dedicated Admin Connection)是SQL Server
2005引进的1个东西,指标是在SQL
Server爆发严重品质难点的时候仍保存少数的财富保证管理员可以履行壹些粗略的指令用于难题会诊、释放能源、杀死肇事进度等。微软官方对DAC的认证:利用专用管理员连接.aspx)。对于DAC使用的形似境况,有五个不错的Blog值得推荐:

一)单机单SQL Server实例,且SQL Server实例使用暗许端口(143三)

使用 DAC 连接

默许情状下,只可以从服务器上运维的客户端建立连接。不允许开始展览互联网连接,除非它们是运用带
sp_configure 存款和储蓄进度配置的。

只有 SQL Server sysadmin 角色的积极分子能够利用 DAC 连接。

通过运用专用的管理员开关 (-A) 的 澳门新萄京,sqlcmd
命令提示实用工具,能够支撑和采纳 DAC。有关使用 sqlcmd
的详细音信,请参阅。您还足以将前缀 admin: 连接到实例名上,格式为
sqlcmd -Sadmin:*<instance_name>。还足以因此连接到
admin:<
实例名*>,从 SQL Server Management Studio
查询编辑器运行 DAC。

问题(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 :
由于打开服务器连接进程中的延迟,无法
形成报到进度。

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

肆)DAC访问与防火墙

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 解决协议 (SSOdysseyP) 请求。它先通过 TCP 端口
143四 举行连接。假设退步,则透过 SS宝马X5P 调用来取得端口。如果 SQL Server
浏览器未有侦听 SSEvoqueP 请求,则连年请求将回到错误。若要理解 DAC
所侦听的端口号,请参阅错误日志。即便将 SQL Server
配置为接受远程管理连接,则必须使用显式端口号运行 DAC:

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

SQL Server 错误日志列出了 DAC 的端口号,暗中认可情形下为 143四。假设将 SQL
Server 配置为只接受本地 DAC 连接,请使用以下命令和环回适配器举办延续:

sqlcmd –S127.0.0.1,1434

Server 2005专用管理员连接 (DAC) 使用技术

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图