Получить список баз данных, к которым у пользователя есть доступ - PullRequest
10 голосов
/ 11 ноября 2009

У меня есть экземпляр SQL Server 2008 с несколькими базами данных, и в настоящее время я пишу приложение на C # для доступа к этим базам данных. В этом приложении конечный пользователь может выбрать базу данных, к которой он хочет подключиться.

У меня уже есть список всех баз данных на сервере, как я могу ограничить этот список теми базами данных, в которые пользователь может войти? Или как я могу запросить этот список?

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

Fyi: сервер настроен только для проверки подлинности Windows, и вход на сервер создается для групп пользователей Windows (не отдельных пользователей).

Ответы [ 3 ]

21 голосов
/ 11 ноября 2009

Вы можете запросить все базы данных из sys.sysdatabases и проверить, имеет ли пользователь доступ с помощью HAS_DBACCESS :

SELECT name
FROM sys.sysdatabases
WHERE HAS_DBACCESS(name) = 1
0 голосов
/ 19 августа 2016

Вы можете использовать системную хранимую процедуру sp_helplogins 'Имя пользователя'

0 голосов
/ 11 ноября 2009

Возможно, в качестве альтернативы ответу Andomars (который мне нравится!) Вы могли бы опросить Active Directory, чтобы узнать, является ли пользователь членом действительной группы для вашей базы данных. Я подозреваю, что это может означать, что вам придется вести поиск по имени группы в базе данных Windows.

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