Я хочу предоставить доступ к базе данных для входа в систему SQL Server. Я знаю о sp_grantdbaccess, однако он удерживается от использования. Что я могу использовать вместо этого и как я могу проверить, не имеет ли вход в систему уже доступа к базе данных?
Сценарий: Усера создает базу данных - в sys.database_principals, у меня есть запись с именем dbo и с sid Усера. Я пытаюсь дать разрешения Усера снова: Я пытаюсь сделать выбор на sys.database_principals по имени ='UserA', однако, так как имя является dbo не Усера, я добираюсь, ошибка - 'Вход в систему уже имеет учетную запись под другим именем пользователя'.. Как я могу определить, есть ли у пользователя доступ к базе данных без sid?
Вы, вероятно, захотите СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ
, например.
CREATE USER bobuser FOR LOGIN boblogin
В каталоге безопасности sys.database_principals есть список пользователей базы данных, поэтому вы можете быть уверены, что у вас еще нет ни одного с таким именем.
Во-первых, вам нужно создать пользователя в этой базе данных для данного логина. Для этого используйте Создать пользователя
. Если вы хотите определить, существует ли уже пользователь, вы можете использовать представление каталога sys.database_principals
, отфильтровав type = 'U'
. Если вы хотите определить, является ли данный пользователь уже в роли, вы можете использовать sys.database_role_members
.