深切探究SQL Server中DAC连接及任何

对于DAC使用的一般情况,)是SQL Server,SQL Server 尽力使 DAC,管理员也可以使用此诊断连接访问 SQL,2 专用管理员连接有什么用,1 什么是专用管理员连接

5)怎么着确认当前是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 解决左券 (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

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

通过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
连接成功,但在丰硕杰出的景象下也说不定会油但是生延续失利。

2 专用管理员连接有哪些用?
正是在 SQL Server 不响应规范连接央求时,管理员也能够接纳这种连接待上访谈 SQL
Server,以便试行会诊查询并缓慢解决难点。
管理员能够通过 DAC 访谈正在运维的 SQL Server Database Engine
实例来解除服务器的故障(固然该服务器已告一段落响应别的顾客端连接)。

2)单机单SQL Server实例,SQL Server实例使用非暗中同意端口

限制

出于 DAC 仅用于在极少数景况下检查判断服务器难点,因而对连接有局部范围:

  • 为了有限协理有可用的三翻五次财富,种种 SQL Server 实例只同意行使三个DAC。借使 DAC 连接已经激活,则经过 DAC
    实行连接的任何新须要都将被拒绝,并出现谬误 17810。

  • 为了保留财富,SQL Server Express 不侦听 DAC 端口,除非选用追踪标识7806 进行运维。

  • DAC 最先尝试连接受与登陆帐户关联的暗中同意数据库。连接成功后,可以连续不断到
    master 数据库。借使暗许数据库脱机或不可用,则连年再次来到错误
    4060。不过,倘若利用以下命令覆盖默许数据库,改为总是到 master
    数据库,则一而再会成功:

    sqlcmd –A –d master

    鉴于只要开动数据库引擎实例,就会确定保证 master
    数据库处于可用状态,由此提出使用 DAC 连接到 master 数据库。

  • SQL Server 禁用 DAC 运维并行查询或指令。比如,倘使应用 DAC
    实施下列任何语句,都会扭转错误 3637。

    • RESTORE

    • BACKUP

  • DAC 只可以动用有限的财富。请勿使用 DAC
    运维需求消耗大量财富的查询(举例,对大型表实践复杂的对接)或恐怕导致堵塞的查询。那推动防守将
    DAC
    与其他现存的服务器难点混淆。为了幸免产生地下的堵截景况,若是必需实行也许会产生围堵的查询,则尽量在依赖快速照相的割裂等第下运维查询;也许,将事情隔绝品级设置为
    READ UNCOMMITTED,将 LOCK_TIMEOUT 值设置为不够长的值(如 三千飞秒),或然相同的时间实践那三种操作。那足避防御 DAC
    会话被封堵。可是,依照 SQL Server 所处的气象,DAC
    会话恐怕会在闩锁上被打断。可以利用 CNT奥迪Q5L-C 终止 DAC
    会话,但不可能担保一定成功。若是战败,唯一的选项是重新起动 SQL
    Server。

  • 为确认保障连接成功并清除 DAC 故障,SQL Server 保留了一定的财富用于拍卖
    DAC
    上运转的指令。平时那一个能源只够实施轻易的检查判断和故障排除成效,如下所示。

就算如此理论上得以运行任何不必在 DAC 上并行施行的 Transact-SQL
语句,但努力提出你限制使用下列检查判断和故障排除命令:

  • 询问动态管理视图以开展基本的会诊,举个例子查询 sys.dm_tran_locks
    以掌握锁定状态,查询 sys.dm_os_memory_cache_counters
    以检查缓存品质,查询 sys.dm_exec_requests 和
    sys.dm_exec_sessions
    以询问活动的对话和央求
    。防止采纳须要消耗大批量能源的动态管理视图(比如,sys.dm_tran_version_store
    扫描整个版本存款和储蓄区,並且会促成大气的
    I/O)或接纳了复杂连接的动态处理视图。有关质量影响的新闻,请参阅特定的文书档案。

  • 询问目录视图。

  • 基本 DBCC 命令,例如 DBCC FREEPROCCACHE、DBCC
    FREESYSTEMCACHE、DBCC DROPCLEANBUFFERS, 和 DBCC
    SQLPERF
    。请勿运转须求开销多量财富的通令,如 DBCC CHECKDB、DBCC
    DBREINDEX 或 DBCC SHRINKDATABASE。

  • Transact-SQL KILL <spid> 命令。依照 SQL Server
    的景观,KILL 命令实际不是一定会水到渠成;要是退步,则独一的挑选是重新起动
    SQL Server。上面是形似的点拨原则:

    • 请通过查询
      SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>
      来验证 SPID
      是还是不是已被实际终止。若无回到任何行,则评释会话已被终止。

    • 一旦会话仍在运维,则经过运维查询
      SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>
      来验证是还是不是为此会话分配了职务。假诺发掘还应该有职分,则很大概当前正在终止会话。注意,此操作只怕会持续不短日子,也说不定根本不会中标。

    • 倘使在与此会话关联的 sys.dm_os_tasks
      中从未其余任务,不过在执行 KILL 命令后该会话仍旧出现在
      sys.dm_exec_sessions
      中,则评释未有可用的专门的学业线程。采取有些当前正值运维的职分(在
      sys.dm_os_tasks 视图中列出的 sessions_id <> NULL
      的任务),并甘休与其涉嫌的对话以自由专业线程。请留心,终止单个会话恐怕缺乏,可能须求截至七个会话。

标题: 连接到服务器

不可能连接到 ADMIN:QIANGGUO\ODS。


其他音讯:

已成功与服务器建构连接,可是在登入进度中发出错误。 (provider: TCP
提供程序, error: 0 – 远程主机强迫关闭了三个存活的接二连三。)
(Microsoft SQL Server,错误: 10054)

消除:已经济建设立一个DAC连接,请先关闭后,再连接。

小说出处:

 

================================================================

 

作者:lansz | 能够转发,
转发时必得以超链接方式申明小说原来出处和作者新闻及版权注解
链接:

问题:

在使用SQL Server
3000的时候,大家大概早就很习于旧贯用下边包车型大巴言语在改动系统表了

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
2006中,你要么想透过运维方面包车型客车语句来修改系统表,那您就大错特错了,就算在SQL
Server
二〇〇七中运作方面包车型客车话语是不会有其余报错的,不过但您策动去修改系统表的时候你会收获上边那样的错误音信:

Msg 259, Level 16, State 1, Line 1
Ad hoc updates to system catalogs are not allowed.

此刻你一旦在SQL Server 2007的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 2006中allow
updates只是三个摆放了,根本无法用,並且系统表也无法直接被改动了。可是一旦您真的供给修改系统表那如何做吧?

辛亏,Microsoft依然尚未做绝的,尽管allow
updates不可能用了,但照旧得以因此其余渠道修改系统表,那正是:先用单客商形式运转SQL
Server 2006实例,然后再用DAC(Dedicated Administrator
Connection/专项使用管理员连接)连接到SQL实例,然后不用运营什么sp_configure就足以一贯修改系统表了。

大旨的步骤:

1、运行到单客商格局

“C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Binn\sqlservr.exe” -m

2、展开SQL Server Management Studio,在Connect to Server对话框中的Server
Name处输入admin:InstanceName,那样就可以用DAC登录运维的SQL
Server实例了。

友情提示:

除此以外,SQL Server
二零零五巩固了字典管理作用,假使要修改系统表的操作能有囤积进度帮忙的情事下必将在用存款和储蓄进程,不要去平昔改动系统表,以保障数据字典的一致性。

参照他事他说加以考察资料:

1、allow updates
Option

2、Using a Dedicated Administrator
Connection

3、Starting SQL Server in Single-User
Mode

 

================================================================

 如何利用SQL Server 贰零零柒 专项使用助理馆员连接(DAC)登入到服务器

 

一 什么是DAC

   SQL Server 二零零七 为大班提供了一种特有的确诊连接,以供在不能与服务器建立标准连接时使用。固然在 SQL Server 不响应标准连接央求时,管理员也得以运用这种连接访谈 SQL Server,以便推行检查判断查询并解决难点。命令行分界面 (sqlcmd) 通过选用特其余协会者按钮 (-A),提供并帮衬这种专项使用助理馆员连接 (DAC)。

二什么采用DAC登陆到服务器

1 本机DAC登录 

命令行方式下实行  sqlcmd -A -S sql服务器名

2  远程DAC登录

  1) 张开远程DAC选项

    ‘程序’->’Sql Server2006′->  ‘配置工具’-> ‘Sql Server  外围应用配置器’-> ‘成效的外围应用配置器’-> ‘DataBase Engine’->  ‘DAC’ ->
‘启用远程DAC’

  2)  登入到长途服务器

  sqlcmd -A -S 192.168.0.1 -U sa -P
123456

3  登陆后,
能够透过查询动态管理视图来检查判断难点

 

DAC(Dedicated Admin Connection)是SQL Server
二〇〇五引进的多少个东西,指标是在SQL
Server发生严重质量难点的时候仍保留少数的能源保障管理员能够实行一些粗略的命令用于难点会诊、释放财富、杀死肇事进度等。微软官方对DAC的辨证:利用专项使用管理员连接.aspx)。对于DAC使用的一般境况,有五个正确的Blog值得推荐:

此专项使用管理员连接 (DAC) 协理 SQL Server 的加密效能和别的安全成效。DAC
只同意将顾客上下文切换来其余管理顾客。

Server 二零零五专项使用管理员连接 (DAC) 使用技术

--以下的形式都可以访问
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)。

SQL Server
为组织者提供了一种特别的确诊连接,以供在不可能与服务器建设构造正式连接时选择。即便在
SQL Server 不响应典型连接央求时,管理员也能够选用此检查判断连接待上访谈 SQL
Server,以便施行会诊查询并减轻难题。

力不能支连接到 ADMIN:QIANGGUO\ODS。

4)DAC访谈与防火墙

使用 DAC 连接

暗中认可意况下,只能从服务器上运转的客商端建设构造连接。不允许开展网络连接,除非它们是应用带
sp_configure 存款和储蓄进度配置的。

只有 SQL Server sysadmin 剧中人物的成员能够选取 DAC 连接。

透过行使专项使用的管理员按钮 (-A) 的 sqlcmd
命令提示实用工具,能够支撑和接纳 DAC。有关使用 sqlcmd
的详细消息,请参阅。您还足以将前缀 admin: 连接到实例名上,格式为
sqlcmd -Sadmin:*<instance_name>。还是能够经过接二连三到
admin:<
实例名*>,从 SQL Server Management Studio
查询编辑器运营 DAC。

3 专项使用管理员连接使用办法
(1)利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
(2)SQL Server Management Studio 查询编辑器运行 DAC
admin:<实例名>
如:ADMIN:QIANGGUO\ODS

1)单机单SQL Server实例,且SQL Server实例使用私下认可端口(1433)

示例

在此示例中,管理员发掘服务器 URAN123
不响应,由此要确诊该难题。为此,顾客激活 sqlcmd
命令提示实用工具,并应用 -A 指明 DAC 连接到服务器 URAN123

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

当今,管理员能够实践查询来检查判断难题,何况能够告一段落甘休响应的对话。

C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
1>