2015-04-17 3 views
1

С одной стороны у меня есть служба Windows, которая использует Entity Framework для подключения к экземпляру SQL Server и работы с базой данных там.Проблемы с соединением SQL Entity Framework с интегрированной безопасностью

С другой стороны, у меня есть установщик на основе WIX, в котором есть GUI на основе начальной загрузки .NET, на котором пользователь может вводить сведения о соединении, которые будут использоваться в строке соединения службой. В этом графическом интерфейсе установщика я также выполняю проверку предоставленных пользователем данных и проверяю соединение с базой данных (используя SqlConnection.Open() и даже создавая/удаляя базу данных).

Проблема появляется в среде рабочей группы, отсутствует контроллер домена и когда пользователь выбирает Integrated Security в качестве опции. Приложение bootstrapper успешно подключается к SQL-серверу и выполняет некоторые операции с ним, но затем служба Windows не может подключиться к SQL-серверу с помощью Integrated Security. Если я продолжу, изменив это на аутентификацию пользователя и пароль, служба работает правильно.

Есть ли способ подключиться к загрузчику, если служба потерпит неудачу, или наоборот?

Спасибо.

ответ

1

Наиболее вероятной причиной является то, что пользователь работает под управлением и пользователь, установленный установщиком, отличается.

Если пользователь, запускающий установщик, имеет доступ к SQL Server через проверку подлинности Windows, соединение будет успешным. Затем, если служба работает под другой учетной записью (Say LocalSystem), пользователь, на котором работает служба, не имеет прав на использование интегрированной безопасности.

Способы использования учетной записи службы, которая имеет разрешения на сервере или использует аутентификацию SQL.

Я столкнулся с этим недавно при развертывании службы. Единственный способ провалить соединение с загрузкой - это запустить его в качестве учетной записи, на которую будет работать служба (олицетворение - это один из способов добиться этого), иначе вы не сможете проверить соединение правильно.

Поскольку вы упоминаете рабочие группы и не имеете какого-либо контроллера домена, может произойти переход через имена пользователей и пароли. В одном месте, где я работал, на одном из ящиков SQL (вне домена) у каждого разработчика была локальная учетная запись Windows с тем же паролем, что и их учетная запись домена. Это позволило пройти проверку подлинности (из-за совпадения имени пользователя и паролей) и доступа к SQL Server. Это может быть то, что происходит.

Смежные вопросы