重新启动时,Windows服务的SQL Server登录问题
我有一个依赖于SQL Server Express(2005)的服务。 每天早上当我重新启动机器时,我发现服务尚未开始。 在事件查看器中,我看到以下错误:
服务无法启动。 System.Data.SqlClient.SqlException:无法打开登录请求的数据库“MyDatabase”。 登录失败。
用户'NT AUTHORITY SYSTEM'登录失败。
在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection)
在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)
在System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(布尔enlistOK)
在System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,String newPassword,Boolean ignoreSniOpenTimeout,Int64 timerExpire,SqlConnection owningObject)
在System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(字符串主机,字符串newPassword,布尔redirectedUserInstance,SqlConnection拥有对象,SqlConnectionString连接...
如果我现在重新启动服务,它可以正常工作,但不会在第一次启动机器时启动。
任何线索为什么发生这种情况?
JD。
我认为这可能发生在您的服务在SQL Server Express之前启动时。 我建议查看下面的解决方案之一:
您可以使用“regedit”程序编辑服务的依赖关系列表,这将导致服务等待,直到SQL Server Express服务启动。 打开“regedit”程序并导航到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices<service name> 。 查找名为REG_MULTI_SZ类型的“DependOnService”的键。 如果你的服务器是Windows 2003,那么REG_MULTI_SZ编辑器每行允许一个字符串值,否则Windows 2000上的二进制编辑器需要在每个字母之间有一个空字节。 您想要输入服务管理器中显示的SQL Server 2005 Express的显示名称。 默认安装通常显示“SQL Server(SQLEXPRESS)”。 如果您在查看依赖服务的“依赖项”选项卡时正确执行了此操作,则应该看到依赖项部分列出了SQL Server Express。
另一个最简单的解决方案是设置你的Windows服务 - 开始为自动(延迟启动)。
标记为自动(延迟启动)的服务将在指定为自动的所有其他服务启动后不久开始。 根据我的经验,这意味着它们在计算机启动后1-2分钟启动。
链接地址: http://www.djcxy.com/p/56691.html上一篇: SQL Server login problem for a windows service on reboot
