为什么login失败会导致SQL 2005转储和沟渠?

我们的SQL 2005服务器开始超时,最后在10月26日停止响应。 应用程序日志显示导致重启的大量17883事件。 重新启动后,一切都很好,但我们仍然在挠头。 快进6天…它再次发生。 然后再过两天。 昨晚。 今天已经发生了三次了。 时间线在发生时是相当可预测的:

  1. 反日志备份。
  2. login失败“user2”。
  3. 转储
  4. 调度程序的另一个小型转储程序
  5. 重复17883次事件。
  6. 服务器一点一点地失败,直到它不接受任何请求。
  7. 重新启动是让我们再次去(一个创可贴)

有趣的是,服务器箱本身似乎没有任何问题。 CPU使用情况正常。 networking连接很好。 我们可以远程查看日志。 尽pipe如此,pipe理工作室最终还是陷入了困境。

今天,我们第一次尝试停止服务而不是重新启动。 除SQL Server服务外,所有服务都自行停止。 我们终于做了一个“终结任务”,并能够把一切都恢复起来。 它工作正常约30分钟,直到我们开始看到超时和17883的一次。 这一次,可能是因为我们没有重新开机,我们看到了17883混入了844个事件。

我们这里的整个技术团队正在摸索着…我们正在踢的一些想法:

  • 当我们第一次遇到问题的时候,MS累积更新大约在同一时间。 从那以后,我们已经回滚了。 也许它并没有一路回滚。
  • 情况看起来和感觉像一个未处理的“堆栈溢出”(无关),因为它开始很小,随着时间的推移而复合化。 问题在于没有显着的CPU使用率。 无论如何,我们并不是统治SQL 2005的bug。
  • 也许我们增加了一个太多的导入过程,并且在这个盒子上达到了极限。 (难以置信)。

在其中一个崩溃时查看SQLDUMP0151.log。 有一些“login失败”,然后有两个堆栈转储。 第一个是正常堆栈转储,第二个是调度程序转储。 这是一个片段:(对于缺less换行符,感到抱歉)

spid63使用'xpsqlbot.dll'版本'2005.90.3042'执行扩展存储过程'xp_qv'。 这只是一个信息性的消息; 无需用户操作。 2009-11-10 11:59:15 spid63使用'xplog70.dll'版本'2005.90.3042'执行扩展存储过程'xp_msver'。 这只是一个信息性的消息; 无需用户操作。 2009-11-10 12:02:33.24login错误:18456,严重性:14,状态:16. 2009-11-10 12:02:33.24loginlogin用户'standard_user2'失败。 [CLIENT:50.36.172.101] 2009-11-10 12:08:21.12login错误:18456,严重性:14,状态:16. 2009-11-10 12:08:21.12loginlogin用户'standard_user2'失败。 [客户端:50.36.172.101] 2009-11-10 12:13:49.38login错误:18456,严重性:14,状态:16. 2009-11-10 12:13:49.38loginlogin用户'standard_user2'失败。 [客户端:50.36.172.101] 2009-11-10 12:15:16.88login错误:18456,严重性:14,状态:16. 2009-11-10 12:15:16.88loginlogin用户'standard_user2'失败。 [客户端:50.36.172.101] 2009-11-10 12:18:24.41login错误:18456,严重性:14,状态:16. 2009-11-10 12:18:24.41loginlogin用户'standard_user2'失败。 [CLIENT:50.36.172.101] 2009-11-10 12:18:38.88 spid111使用'dbghelp.dll'版本'4.0.5'2009-11-10 12:18:39.02 spid111 *** Stack Dump被发送到C :\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ SQLDump0149.txt 2009-11-10 12:18:39.02 spid111 SqlDumpExceptionHandler:进程111生成致命exceptionc0000005 EXCEPTION_ACCESS_VIOLATION。 SQL Server正在终止这个过程。 2009-11-10 12:18:39.02 spid111 * ************************************** ***************************************** 2009-11-10 12:18: 39.02 spid111 * 2009-11-10 12:18:39.02 spid111 * BEGIN STACK DUMP:2009-11-10 12:18:39.02 spid111 * 2009年11月10日12:18:39 spid 111 2009-11-10 12: 18:39.02 spid111 * 2009-11-10 12:18:39.02 spid111 * 2009-11-10 12:18:39.02 spid111 *exception地址= 0159D56F模块(sqlservr + 0059D56F)2009-11-10 12:18:39.02 spid111 *exception代码= c0000005 EXCEPTION_ACCESS_VIOLATION 2009-11-10 12:18:39.02 spid111 *写入地址发生访问冲突00000000 2009-11-10 12:18:39.02 spid111 *input缓冲区138字节 – 2009-11-10 12:18: 39.02 spid111 *“NRSC _ PTA 22 00 4e 00 52 00 53 00 43 00 5f 00 50 00 54 00 41 00 2009-11-10 12:18:39.02 spid111 * C _ QA。dbo。43 00 5f 00 51 00 41 00 2e 00 64 00 62 00 6f 00 2e 00 2009-11-10 12:18:39.02 spid111 * U sp S n N ex 55 00 73 00 70 00 53 00 65 00 6c 00 4e 00 65 00 78 00 2009-11 -10 12:18:39.02 spid111 * t账户74 00 41 00 6 3 00 63 00 6f 00 75 00 6e 00 74 00 00 00 2009-11-10 12:18:39.02 spid111 * @ int F orm I 0a 40 00 69 00 6e 00 74 00 46 00 6f 00 72 00 6d 00 49 2009 -11-10 12:18:39.02 spid111 * D&8 @ tx 00 44 00 00 26 04 04 38 00 00 00 09 40 00 74 00 78 00 2009-11-10 12:18:39.02 spid111 * t lias§ 74 00 41 00 6c 00 69 00 61 00 73 00 00 a7 0f ​​00 09 04 2009-11-10 12:18:39.02 spid111 *ÐGQE9732 d0 00 00 07 00 47 51 45 39 37 33 32 2009-11-10 12 :18:39.02 spid111 *
2009-11-10 12:18:39.02 spid111 * 2009-11-10 12:18:39.02 spid111 * MODULE BASE END SIZE 2009-11-10 12:18:39.02 spid111 * sqlservr 01000000 02C09FFF 01c0a000 2009-11-10 12 :18:39.02 spid111 * ntdll 7C800000 7C8C1FFF 000c2000 2009-11-10 12:18:39.02 spid111 * kernel32 77E40000 77F41FFF 00102000

UspSelNex – 这是一个存储过程,当你有你的问题时总是运行?