Я выполняю интеграционные тесты с базой данных C #, NUnit и SQL Server 2008 r2 dev. Настройка моего прибора включает создание новой базы данных и загрузку тестовых данных, поэтому для этого мне нужны привилегии dbo.
Однако я хочу запускать сами тесты с меньшими привилегиями. У меня есть другая учетная запись 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");
Как только начинается первый модульный тест, я получаю эту ошибку, перечисляя одну из библиотек, использованных в этом тесте: System.IO.FileLoadException: Could not load file or assembly '...' or one of its dependencies. Access is denied.
Я предоставил этой другой учетной записи полный доступ к каталогу со всеми моими двоичными файлами, что не помогло.
Любые предложения приветствуются.
Редактировать: моя рабочая станция все еще работает под управлением XP.