Разрешения базы данных работают иначе, чем служба Windows? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть консольное приложение, которое также запускается как служба Windows (см .: .NET консольное приложение как служба Windows )

Оно запускает сохраненный процесс, который работает на моей локальной базе данных,однако по сети он работает только как консольное приложение, служба выдает «SqlException (0x80131904): не удается найти объект или у вас нет разрешения».

У учетной записи пользователя есть разрешения владельца базы данных.

Самое первое, что делает SP - отключает триггер для таблицы, который теперь говорит, что либо не существует, либо у меня нет разрешения.для доступа.

Я новичок в службах Windows, мне чего-то не хватает?Они работают по-другому в этом отношении?

Это экземпляр sqlserver 2012 на другом компьютере разработчика по локальной сети.

Строка подключения:

 <add name="XYZ_ConnectionString" connectionString="Data Source=PCNAME\sql2012;Initial Catalog=DB_Name;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>

РЕДАКТИРОВАНИЕ: Я заметил, чтоболее ранняя часть службы, которая делает выбор таблицы из БД, работает правильно, что говорит о том, что соединение работает?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Если запрос на выбор выполняется правильно, то это похоже на проблему с правами на SQL Server для пользователя, исключающего операции.

Учитывая, что вы удаляете триггер, для которого требуется другой набор разрешений,те, которые необходимы для выполнения оператора выбора.Я бы посоветовал вам убедиться, что работающий пользователь получает надлежащий доступ к сервисам, я бы использовал SQL Server Profiler для записи всех запросов и событий в базу данных сразу после запуска приложения.Там я бы увидел, что запросы не выполняются и имеют более четкое представление о корне ошибки.

0 голосов
/ 09 октября 2018

Вы используете проверку подлинности Windows (часть строки подключения, которая читает Integrated Security=SSPI;), поэтому, когда вы запускаете ее как консольное приложение, она использует ваш зарегистрированный идентификатор Windows для аутентификации.

Серверы SQLможно настроить для использования проверки подлинности Windows или «смешанного режима», который поддерживает текстовое имя пользователя и пароль ( подробности ).Обратите внимание, что по умолчанию используется только аутентификация Windows.

Если вы можете добавить аутентификацию в смешанном режиме на SQL Server (или она уже включена), то попросите администратора базы данных создать нового пользователя и заменить Integrated Security=SSPI; часть вашей строки подключения с чем-то вроде этого:

;User ID=*****;Password=*****;

Если вы не можете использовать смешанный режим аутентификации на SQL Server (некоторые администраторы базы данных не хотят этого делать), вам необходимо настроитьСлужба Windows для запуска с учетной записью домена Windows - обратите внимание, что это должна быть учетная запись домена, а не локальная учетная запись Windows на вашем ПК, поскольку SQL Server должен получить доступ к контроллеру домена для проверки подлинности учетных данных.

Информацию о настройке учетных данных службы можно найти здесь , но это немного сложнее, чем открыть службу в окне диспетчера служб, перейти на вкладку «Вход в систему» ​​и выбрать учетную запись для запуска службы.а.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...