SQL Server 持续崩溃,无法连接 SSMS,代理未启动

SQL Server 持续崩溃,无法连接 SSMS,代理未启动

系统 Windows Server 2003 x64 SQL Server 2005 x64

问题:

1) 无法通过 SSMS 连接 - 尝试了 sa 帐户和域帐户(属于 sysadmin 组) - 如果我提供了错误的密码,则 SQL Server 会响应我的凭据无效。 - 如果我提供了正确的密码/使用集成安全性,我会收到以下错误消息:“当前命令发生严重错误。 如果有结果,则应丢弃。 (.Net SqlClient 数据提供程序)

2) SQL Server 代理未启动 - 尝试使用不同的帐户(具有 sysadmin 权限)启动服务 - UI 中没有错误 - SQLAGENT.OUT

2014-03-06 15:48:26 - ? [393] Waiting for SQL Server to recover databases...
2014-03-06 15:48:36 - ! [165] ODBC Error: 0, Unspecified error occurred on SQL Server. Connection may have been terminated by the server. [SQLSTATE HY000] 
2014-03-06 15:48:36 - ! [000] Unable to connect to server '(local)'; SQLServerAgent cannot start
2014-03-06 15:48:36 - ! [165] ODBC Error: 0, Unspecified error occurred on SQL Server. Connection may have been terminated by the server. [SQLSTATE HY000] 
2014-03-06 15:48:36 - ! [382] Logon to server '(local)' failed (DisableAgentXPs)
2014-03-06 15:48:36 - ? [098] SQLServerAgent terminated (normally)

3) SQL Server(似乎)一直在崩溃。- 服务启动时 UI 没有任何错误 - 每分钟创建新的错误日志/小型转储 - 我尝试使用不同的帐户启动该服务 - 日志文件显示:

2014-03-02 20:11:15.92 Server Error: 17310, Severity: 20, State: 1.
2014-03-02 20:11:15.92 Server A user request from the session with SPID 51 generated a fatal exception. SQL Server is terminating this session. Contact Product Support Services with the dump produced in the log directory.
2014-03-02 20:11:29.90 spid51 Using 'dbghelp.dll' version '4.0.5'
2014-03-02 20:11:29.90 spid51 ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump0052.txt
2014-03-02 20:11:29.90 spid51 SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
2014-03-02 20:11:29.90 spid51 * *******************************************************************************
2014-03-02 20:11:29.90 spid51 *
2014-03-02 20:11:29.90 spid51 * BEGIN STACK DUMP:
2014-03-02 20:11:29.90 spid51 * 03/02/14 20:11:29 spid 51
2014-03-02 20:11:29.90 spid51 *
2014-03-02 20:11:29.90 spid51 *
2014-03-02 20:11:29.90 spid51 * Exception Address = 000000007814E250 Module(MSVCR80+000000000001E250)
2014-03-02 20:11:29.90 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
2014-03-02 20:11:29.90 spid51 * Access Violation occurred reading address 000000180BAE6B40
2014-03-02 20:11:29.90 spid51 * Input Buffer 48 bytes -
2014-03-02 20:11:29.90 spid51 * exec sp_oledb_ro_usrname

我打开了崩溃转储并发现以下内容

0:000> kc 51
Call Site
ntdll!ZwWaitForSingleObject
kernel32!WaitForSingleObjectEx
sqlservr!CDmpDump::DumpInternal
sqlservr!CDmpDump::Dump
sqlservr!CImageHelper::DoMiniDump
sqlservr!ContextDumpNoStackOverflow
sqlservr!ContextDump
sqlservr!stackTraceExceptionFilter
sqlservr!ex_trans_cexcept
sqlservr!SOS_SEHTranslator
msvcr80!CallSETranslator
msvcr80!_CxxExceptionFilter
msvcr80!_CxxExceptionFilter
msvcr80!_InternalCxxFrameHandler
msvcr80!_CxxFrameHandler
ntdll!RtlpExecuteHandlerForException
ntdll!RtlDispatchException
ntdll!KiUserExceptionDispatcher
msvcr80!memcpy
sqlservr!yyparse
sqlservr!sqlpars
sqlservr!CSQLSource::FParse
sqlservr!CSQLSource::FCompWrapper
sqlservr!CSQLSource::Transform
sqlservr!CSQLSource::Execute
sqlservr!process_request
sqlservr!process_commands
sqlservr!SOS_Task::Param::Execute
sqlservr!SOS_Scheduler::RunTask
sqlservr!SOS_Scheduler::ProcessTasks
sqlservr!SchedulerManager::WorkerEntryPoint
sqlservr!SystemThread::RunWorker
sqlservr!SystemThreadDispatcher::ProcessWorker
sqlservr!SchedulerManager::ThreadEntryPoint
msvcr80!endthreadex
msvcr80!endthreadex
kernel32!BaseThreadStart

我认为问题 #1 和 #2 是由 #3 引起的。我不知道 SPID51 是什么,因为我甚至无法使用 SSMS 登录。

幸运的是,我们有服务器备份,并且运行良好。

我尝试过

  • 禁用除主服务之外的所有 SQL 服务

  • -f -T3608

  • 使用域管理员和本地系统启动 SQL 服务

  • 以最小配置模式启动服务器

  • 禁用网络适配器,以防有未知的东西连接到它

  • 禁用服务器上的所有其他服务

以上均未解决问题

相关内容