2014-05-21 58 views
0

用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...用戶在Windows服務中登錄失敗

雖然,測試但應用程序工作正常,但不知道錯誤給予。

請幫忙。

+0

看來你的服務無法創建連接檢查你的連接字符串在app.config文件中 –

+0

用戶名/密碼不匹配或服務器名稱不正確。打開你的數據庫,並檢查你是否使用(本地)/(。SQLExpress)或任何實例,並在連接字符串數據源中指定它 – Sakthivel

回答

0

您是否試圖在ServiceBase.OnStart事件中創建任何SQL實例? 如果是這樣,那麼你需要檢查你通過的連接字符串,通過app.config(在已安裝的文件夾路徑上它將是你的windowservicename.config)或通過代碼。

在這個連接字符串你通過Windows登錄身份驗證。因此,您需要確保您正在運行的窗口服務(您可以檢查窗口服務屬性 - 安全性,分配哪個用戶)。此用戶必須有權訪問您的SQL數據庫。

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

希望它能幫助!

0

它可能是您在連接字符串中提到的實例名稱。

打開你的sql server,使用你正在服務中使用的Windows Authentication \ SQL Authentication進行登錄。檢查提供的用戶名和密碼適用於「Domain \ MachineName $」服務器。

您正在OnStart事件上建立數據庫連接,由於實例名稱或用戶名/密碼組合不正確而無法啓動服務。

還有一點要記住,確保您的服務在sql重新啓動後啓動。這樣你就不會在系統重啓時遇到任何登錄錯誤。將您的服務設置爲「自動 - (延遲)」。