在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...
虽然,应用程序在测试时可以正常工作,但不确定错误提供。
请帮忙。
答案 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启动后启动服务。这样你就不会在系统重启时遇到任何登录错误。将您的服务设置为“自动 - (延迟)”。