Связь между службой Windows и базой данных SQL - PullRequest
0 голосов
/ 22 сентября 2011

Я пытаюсь установить соединение между службой Windows, написанной на C #, и базой данных SQL Server Express. Но когда connection.open вызывается, я получаю это исключение

System.Data.SqlClient.SqlException:

{"Не удалось создать пользовательский экземпляр SQL Server из-за сбоя в запуск процесса для пользовательского экземпляра. Соединение будет закрыт. "}

Но тот же код отлично работает, когда я запускаю его как консольное приложение. Может кто-нибудь, пожалуйста, помогите мне с этим ??

_connection = new SqlConnection("Data Source=.\\MSSQLSERVER1;AttachDbFilename=D:\\vinay\\project\\LightHistorian\\LH_DB.MDF‌​;Integrated Security=True;User Instance=True;");

Я дал те же учетные данные, что и локальная система. Это работает время, а в другое время - нет. Но когда случается это исключение, если я перезагружаю машину, она работает.

Я использовал одно и то же соединение для службы Windows и консольного приложения

1 Ответ

1 голос
/ 22 сентября 2011

Когда вы запускаете консольное приложение, EXE запускается под вашими учетными данными.
Когда вы выполняете свою службу, какие учетные данные пользователя?Ваш сервис работает под учетной записью сервиса Locl?Или система?Или что?
Попробуйте вручную установить учетные данные, с которыми должна работать ваша служба (на панели служб Windows, проверьте свойства службы), и попробуйте выполнить ее с тем же пользователем / pwd, с которым вы запускаете консольное приложение.

ОБНОВЛЕНИЕ взято из здесь :
Использование пользовательского экземпляра в локальном экземпляре SQL Server Express
Функция пользовательского экземпляра создает новый SQLЭкземпляр сервера на лету во время подключения.Это работает только на локальном экземпляре SQL Server 2005 и только при подключении с использованием проверки подлинности Windows по локальным именованным каналам.Цель состоит в том, чтобы иметь возможность создания экземпляра SQL Server с полными правами для пользователя с ограниченными правами администратора на компьютере.
Я мог бы подумать, что учетные данные службы не предоставлены создать новый сервер SQLэкземпляр, поэтому попробуйте удалить эту часть.
В любом случае, установите учетные данные пользователя в свойствах службы и посмотрите, что произойдет.

...