2010-11-20 75 views
4

我需要你的幫助!!!!windows服務sql連接問題

我想連接到從Windows服務的SQL服務器,但它拋出以下異常:

用戶登錄失敗'NT AUTHORITY \ ANONYMOUS登錄。

我的連接字符串聲明如下:

<add name="CoreConnectionString" 
    connectionString="Data Source=10.10.2.102;Initial Catalog=DataBaseName; 
         Integrated Security=True" 
    providerName="System.Data.SqlClient" /> 

當我使用的用戶名和密碼,而不是集成安全性=真它的工作原理,但在最後的部署,我不能使用用戶名和密碼。

什麼是錯我該怎麼辦?

回答

8

當您在連接字符串中定義Integrated Security=True時,當前登錄的任何用戶都會嘗試連接到您的數據庫。當作爲控制檯或Winforms應用程序運行時,這是您自己的用戶帳戶。

但是,如果將它作爲Windows NT服務運行,則它是運行此服務的服務帳戶 - 在您的案例中顯示爲NT AUTHORITY\ANONYMOUS LOGON

並且錯誤顯示它很清楚:此用戶帳戶沒有連接到SQL Server的權限。

您有幾種選擇:

  • 停止你的NT服務,更改服務帳戶是誰做的人可以訪問SQL Server的

  • 允許NT AUTHORITY\ANONYMOUS LOGON登錄到您的SQL Server並使用您的數據庫

  • 在您的SQL Server中創建特定用戶(例如「應用程序用戶」),並更改您的連接字符串以專門使用該用戶:

    connectionString="Data Source=10.10.2.102;Initial Catalog=DataBaseName; 
            user id=Your-Application-User-here;password=The-Secret-Password" 
    
+0

謝謝您的回答,我可以解決這個問題如下:我改變了我的服務「登錄」以管理員,因此它可以連接到數據庫,感謝您的幫助。 – Bahar 2010-11-20 11:48:42

+0

@marc_s,它是什麼意思「更改服務帳戶」?實際上要採取什麼步驟? – ilans 2015-10-16 08:17:17

+0

@ilanS:開始菜單>鍵入「services.msc」並回車>找到你的服務>右鍵點擊屬性>選擇第二個選項卡(不知道它是如何標記在你的Windows版本中的),它允許你定義在哪個帳戶下服務運行 - >將其設置爲任何對您有意義的內容 – 2015-10-16 09:00:11