我知道這個問題已經被問過很多次了,但是我查看了答案並沒有找到解決方案。SqlException:無法打開登錄請求的數據庫「path db.mdf」。登錄失敗。登錄失敗的用戶'NT AUTHORITY SYSTEM'
我在C#中構建了一個Windows Service
,它連接到數據庫並用其他來源的數據填充它。我設置Account -> LocalSystem
爲ServiceProcessInstaller
和StartType -> Automatic
爲ServiceInstaller
。
我使用實體框架從數據庫中生成的.edmx,這是一個連接字符串:
<add name="ConStringName"
connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;
attachdbfilename="somePath\MyDbName.mdf";
integrated security=True;connect timeout=30;
MultipleActiveResultSets=True;
App=EntityFramework'"
providerName="System.Data.EntityClient" />
而且我有這樣的代碼:
var objContext = ((IObjectContextAdapter)dbContext).ObjectContext;
objContext.ExecuteStoreCommand("DELETE FROM Properties;");
在第二行中,我得到
Cannot open database "path\DbName.MDF" requested by the login. The login failed.
Login failed for user 'NT AUTHORITY\SYSTEM'.
我到目前爲止試過的東西:
1)試圖爲每個數據庫表這樣的代碼:
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.TableName TO "NT AUTHORITY\SYSTEM";
和無DBO。
GRANT SELECT, INSERT, UPDATE, DELETE ON TableName TO "NT AUTHORITY\SYSTEM";
2)我已經爲這個用戶 'NT AUTHORITY \ SYSTEM' 在我的數據庫的權限:
在SSMS:數據庫=> MYDATABASE - >安全 - >用戶 - >「NT AUTHORITY \系統」 - >屬性 - >會員 - >的db_owner
3)試圖設置在SQL Server爲這個帳戶perissions: 數據庫 - >安全 - >登錄 - > 'NT AUTHORITY \ SYSTEM' - >屬性 - >在這裏設置db_owner
奇怪的事情: 有一次我重新啓動電腦,一切工作!像這個LocalSystem有權限,Windows服務可以訪問數據庫並執行所有操作!
但是在某些情況下,這種異常開始再次出現。我試過重新啓動計算機但失敗了。
我知道我錯過了一些明顯的東西。請幫我找到這件事。
嗨!對於第二個選項,我應該創建一個基於Windows或SQL Server的用戶? –
無所謂,取決於你,兩者都可以工作。 – Szymon
我已經創建了一個新的基於SQL Server的用戶,但由於某種原因,當我嘗試從Visual Studio的服務器資源管理器中使用指定的用戶名和密碼連接到數據庫時,我得到:「試圖連接到db文件失敗並顯示以下信息:用戶test_user登錄失敗「。我有企業版的SQL服務器,也許這不知何故涉及到問題 –