我正在使用C#,NUnit和SQL Server 2008 r2开发版数据库进行集成测试。设置我的fixture包括创建一个新的数据库并加载测试数据,因此我需要dbo特权。
然而,我希望以较低的权限运行测试。我有另一个可以验证的AD账户,我可以使用模仿运行一些T-SQL,如下所述:http://support.microsoft.com/?scid=306158。
然而,我希望以较低的权限运行测试。我有另一个可以验证的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:无法加载文件或程序集'...'或其一个依赖项。拒绝访问。
我已经授予其他帐户对包含所有二进制文件的目录的完全访问权限,但并没有帮助。
欢迎任何建议。
编辑:我的工作站仍在运行XP操作系统。