我正在使用C#,NUnit和SQL Server 2008 R2開發版數據庫運行集成測試。設置我的夾具包括創建一個新的數據庫和加載測試數據,所以我需要dbo權限。使用不同憑據運行NUnit集成測試
但是,我想用較少的權限運行測試。我還有一個AD帳戶,我可以進行身份驗證,而我呢可以運行使用模擬一些T-SQL如下所述:http://support.microsoft.com/?scid=306158,如下:
public static bool ExecuteFileAs(string fileName, string connectionString,
string user, string domain, string password)
{
using(new Impersonator(user, domain, password))
{
using(var connection = new SqlConnection(connectionString))
{
connection.Open();
return SqlFileExecuter.RunSql(connection, fileName);
}
}
}
當我打這個代碼片斷中斷點,並啓動探查器,我看到另一個連接用我提交給它的用戶名打開,所以模擬真的有效。 不幸的是,我無法在夾具設置結束時運行所有的模擬測試,並在夾具拆卸結束。在設置結束時,我執行以下命令:
impersonator = new Impersonator("username", "DOMAIN", "pwd");
只要第一單元測試開始,我收到此錯誤列出在本次測試使用的DLL文件之一:System.IO.FileLoadException: Could not load file or assembly '...' or one of its dependencies. Access is denied.
我已經理所當然地認爲其他帳戶用我所有的二進制文件完全訪問目錄,這並沒有幫助。
歡迎任何建議。
編輯:我的工作站仍在運行XP。
是否有原因導致您無法使用SQL身份驗證而不是受信任的連接?這隻需要您更改此部分測試的連接字符串。此外,您可以在使用模擬之前將SQL數據加載到內存中,因此您不必訪問sql執行程序的磁盤? – Travis 2011-05-19 18:30:15
特拉維斯,我的生產服務器此時不使用混合模式認證,但我認爲您的建議將起作用。你可以發表你的評論作爲答案,以便我可以接受嗎?謝謝。 – 2011-05-19 19:20:58
您是否使用Windows身份驗證獲得任何解決方案?標記的答案是關於使用SQL – Kiquenet 2016-12-14 15:31:50