用户在Windows服务中登录失败

时间:2014-05-21 12:22:48

标签: c# .net service

在C#中编写一个Windows服务并通过installutil安装它。现在,当我试图启动服务时,它说  "Service cannot be started. System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'Domain\MachineName$'.at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlIn...

虽然,应用程序在测试时可以正常工作,但不确定错误提供。

请帮忙。

2 个答案:

答案 0 :(得分:0)

您是否尝试在ServiceBase.OnStart事件中创建任何SQL实例? 如果是这样,那么你需要检查你传递的连接字符串,通过app.config(在已安装的文件夹路径上,它将是你的windowservicename.config)或通过代码。

在此连接字符串中,您通过Windows登录进行身份验证。因此,您需要确保您正在运行的窗口服务(您可以检查窗口服务属性 - 安全性,分配给哪个用户)。该用户必须具有对SQL数据库的访问权限。

查看http://www.connectionstrings.com/sql-server/

希望它有所帮助!

答案 1 :(得分:0)

它可能是您在连接字符串中提到的实例名称。

打开您的sql server,使用您在服务中使用的Windows身份验证\ SQL身份验证登录。检查提供的用户名和密码是否适用于“Domain \ MachineName $”服务器。

您正在OnStart事件上建立数据库连接,由于实例名称或用户名/密码组合不正确而无法启动服务。

还有一点需要记住,请确保在重新启动计算机后sql启动后启动服务。这样你就不会在系统重启时遇到任何登录错误。将您的服务设置为“自动 - (延迟)”。