IS_SRVROLEMEMBER возвращает 0, когда указан вход в домен - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть скрипт sql, запускаемый установщиком, чтобы определить, является ли текущий пользователь системным администратором в подключенной базе данных. По какой-то причине указание имени пользователя приводит к сбою скрипта.

Я не могу сейчас изменить скрипт, поэтому я хотел бы знать, что может вызвать такое поведение, у скрипта не было проблем с другими машинами. Скрипт запускается на SQL Server 2012 Express.

Вот скрипт:

SELECT IS_SRVROLEMEMBER('sysadmin'),IS_SRVROLEMEMBER('sysadmin','domain\user')

Скрипт вернет 1 и 0 соответственно. Я хотел бы знать, почему вторая часть сценария возвращает 0.

Заранее спасибо!

ОБНОВЛЕНИЕ Когда я запускаю этот сценарий, я вошел в систему как домен \ пользователь, поэтому они должны либо вернуть 0, либо 1. Не 1 и 0

ОБНОВЛЕНИЕ 2 Кажется, что служба сервера sql не может получить доступ к контроллеру домена. При запросе локального пользователя запрос возвращает оба значения 1.

Мой новый вопрос: почему служба сервера SQL не сможет связаться с контроллером домена для запроса IS_SRVROLEMEMBER, когда я могу войти на сервер SQL как пользователь домена.

1 Ответ

0 голосов
/ 09 апреля 2019

Согласно документам Microsoft:

Возвращаемое значение 0: логин не является членом роли.

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

Справка:

https://docs.microsoft.com/en-us/sql/t-sql/functions/is-srvrolemember-transact-sql?view=sql-server-2017

Обновление

enter image description here

Когда я вхожу в систему как 'AD \ j2wan', но я использовал функцию, чтобы проверить вход в систему 'test', является ли он членом этой роли.

Тогда я получил 1 и 0.

Не могли бы вы дважды проверить, какой логин вы использовали, и роль (и) сервера вашего логина, если у него есть sysadmin?

...