繁体   English   中英

SQL Server阻止问题

[英]SQL Server Blocking Issue

当前,我们遇到的一个问题大约每天在SQL 2005数据库服务器上发生一次,尽管发生的时间并不一致。

基本上,数据库会停止运行,并使用以下错误消息开始拒绝连接。 这包括登录SSMS:

已成功与服务器建立连接,但是在登录过程中发生了错误。 (提供者:TCP提供程序,错误:0-指定的网络名称不再可用。)

我们用于SQL的CPU使用率通常约为15%,但是当数据库处于损坏状态时,它的利用率约为70%,因此即使没有人可以连接,它显然也在做某些事情。 即使我禁用了使用数据库的Web应用程序,CPU仍然不会关闭。

我无法重新启动SQLSERVER进程,因为它没有响应,因此我不得不手动终止该进程,然后将数据库置于Suspect / Recovery模式(我可以解决,但很痛苦)。

下面是当数据库处于故障状态时我收集的一些PerfMon统计信息,这可能会有所帮助。 如果人们想要他们,我还有很多:

  • 有效交易:2(从不
  • 更改)逻辑连接:34(NC)
  • 阻止的进程:16(NC)用户
  • 连接:30(NC)批处理请求:0
  • (NC)活动作业:2(NC)日志
  • 截断:596(NC)对数收缩:24
  • (NC)最长的交易
  • 时间:99(NC)

我想他们的关键是找出数据库正在使用的CPU,但是由于我什至无法登录SSMS,因此使用标准方法是不可能的。

令人不安的是,我什至不能使用专用的管理员连接来进入SSMS。 与其他所有请求一样,我得到了相同的提示。

任何建议,建议,甚至同情,非常感谢!

您将需要使用事件探查器来确定可能导致此问题的查询和进程。

在阻止正常连接的同时,您可能希望尝试在“专用管理控制台”连接下进入。 为此,您需要具有数据库服务器的sysadmin角色,在SSMS中,当您使用“ admin:”指定服务器名称前缀时-这将使用不同的连接,该连接不太可能被阻止(但并非不可能,仅在极端情况下)。

默认情况下,您不应该使用此DAC,您可以访问系统表和通常看不见的其他项目,因此也可能造成很多损害。

进入后,您将拥有一个正常的查询窗口,并可以开始查看正在运行的内容,已锁定的内容等。

专用的管理员连接旨在在这些情况下提供帮助

然后,该脚本可以告诉您什么正在运行open tran和SQL

SELECT s_tst.[session_id],
   s_es.[login_name] AS [Login Name],
   S_tdt.[database_transaction_begin_time] AS [Begin Time],
   s_tdt.[database_transaction_log_record_count] AS [Log Records],
   s_tdt.[database_transaction_log_bytes_used] AS [Log Bytes],
   s_tdt.[database_transaction_log_bytes_reserved] AS [Log Reserved],
   s_est.[text] AS [Last T-SQL Text],
   s_eqp.[query_plan] AS [Last Query Plan]
FROM sys.dm_tran_database_transactions s_tdt
   JOIN sys.dm_tran_session_transactions s_tst
      ON s_tst.[transaction_id] = s_tdt.[transaction_id]
   JOIN sys.[dm_exec_sessions] s_es
      ON s_es.[session_id] = s_tst.[session_id]
   JOIN sys.dm_exec_connections s_ec
      ON s_ec.[session_id] = s_tst.[session_id]
   LEFT OUTER JOIN sys.dm_exec_requests s_er
      ON s_er.[session_id] = s_tst.[session_id]
   CROSS APPLY sys.dm_exec_sql_text (s_ec.[most_recent_sql_handle]) AS s_est
   OUTER APPLY sys.dm_exec_query_plan (s_er.[plan_handle]) AS s_eqp
ORDER BY [Begin Time] ASC;

最后,SQL Server 2005 运行默认跟踪 :您可以使用它来查找出了什么问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM