>

【乐百家数据库】何以行使专项使用处理总是举

- 编辑:乐百家599手机首页 -

【乐百家数据库】何以行使专项使用处理总是举

4)DAC访谈与防火墙

使用 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 实例只同意利用贰个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 值设置为比较短的值(如 3000阿秒),也许同期实践那三种操作。那能够幸免 DAC 会话被封堵。可是,依照 SQL Server 所处的图景,DAC 会话或然会在闩锁上被堵塞。可以使用 CNT途乐L-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_乐百家lo599,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 的任务),并结束与其关联的对话以自由职业线程。请留意,终止单个会话也许远远不够,恐怕须要结束多少个会话。

6 常用脚本
--利用sqlcmd
sqlcmd -Sqiangguoods -A
sqlcmd -Sadmin:qiangguoods
-- 查询动态视图
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>

--以下的形式都可以访问
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 只同意将客户上下文切换成其余管理客户。

7 常见错误
问题(1)
C:Documents and Settingsguoqiang>sqlcmd -S qiangguoods,1434
HResult 0x274D,级别 16,状态 1
TCP 提供程序: 由于目的机器积极拒绝,不可能连接。

如果有人通过我上面提到的有效的方式进行DAC访问却不幸失败了,也请不要奇怪。抛开端口劫持等特殊情况,DAC访问失败最常见的就是受到防火墙设置的拦截。对于上面提到的两种单机单实例的情况,只要确认服务端配置了允许对tcp1434端口的访问,DAC连接应该是没有问题的;复杂的情况仍然是单机多实例。

对于单机多实例的情况,由于DAC侦听的端口是随机的,不能指定,所以我们没法在防火墙上给它开口子,除非关闭防火墙。事实上,我在测试的时候就是让服务器上的Windows防火墙对域范围内的访问不起作用(关闭针对域内部访问的拦截)的。那要想从外网访问怎么办?总不能为了一个DAC连接把这台服务器赤裸裸的暴露出来(给它配外网IP)或者关掉公司的级别的防火墙吧?这倒不必,可以用VPN或者端口映射从防火墙上开个小口子,这样你就能连接到局域网,从那进行DAC访问。

SQL Server 为大班提供了一种分外的检查判断连接,以供在不能够与服务器建立规范连接时使用。固然在 SQL Server 不响应标准连接央浼时,管理员也能够选择此检查判断连接待上访谈 SQL Server,以便推行检查判断查询并消除难题。

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 值设置为不够长的值(如 两千阿秒)。那可避防备 DAC 会话被封堵。
可是,依据 SQL Server 所处的动静,DAC 会话可能会在闩锁上被卡住。能够选取CNTENCOREL-C 终止 DAC 会话,但不能够担保一定成功。固然退步,独一的抉择是双重起动 SQL Server。
为确认保障连接成功并免去 DAC 故障,SQL Server 保留了迟早的财富用于拍卖 DAC 上运转的一声令下。日常那些财富只够实行轻松的确诊和故障排除成效,如下所示。
为了保留财富,DAC 连接在 SQL Server 2006 Express Edition 中不可用。

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

SQL Server 尽力使 DAC 连接成功,但在非常独特的情状下也说不定会冒出接二连三战败。

Server 二〇〇七专项使用管理员连接 (DAC) 使用技艺

1)单机单SQL Server实例,且SQL Server实例使用暗许端口(1433)

示例

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

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

这段日子,管理员能够实践查询来检查判断难题,何况能够告一段落结束响应的对话。

任何信息:

2)单机单SQL Server实例,SQL Server实例使用非私下认可端口

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

C:Documents and Settingsguoqiang>sqlcmd -S qiangguoods -A
1>

本文由乐百家数据库发布,转载请注明来源:【乐百家数据库】何以行使专项使用处理总是举