У нас есть тестовая база данных и несколько тестовых логинов, которые мы хотели бы предоставить db_owner для доступа через script. Обычно нам нужно войти в логины и щелкнуть правой кнопкой мыши по имени пользователя и перейти к сопоставлению пользователей и выбрать базу данных, чтобы связать ее и предоставить владельцу доступ, и нажать OK.
SQL Server дает пользователям (пользователям) доступ к базе данных db_owner
Ответ 1
Вам нужно сделать две вещи, выполняемые в контексте целевой базы данных (т.е. сначала выполнить USE (database)
):
- Добавьте этого пользователя в качестве входа в базу данных:
CREATE USER [LoginName] FOR LOGIN [LoginName]
- Добавьте этого пользователя в роль:
EXEC sp_addrolemember N'db_owner', N'LoginName'
В общем случае, если у вас есть SQL Server Management Studio 2005 или выше, вы можете войти в пользовательский интерфейс для выполнения операции, заполнить диалоговое окно (в этом случае назначить пользователя базе данных и добавить роли), а затем нажмите кнопку "Script" вверху. Вместо выполнения команды он напишет script для действия в новое окно запроса.
Ответ 2
Использовать sp_addrolemember
EXEC sp_addrolemember 'db_owner', 'MyUser'
Ответ 3
Вот как использовать ALTER ROLE
с именем существующего сервера с именем MyLogin
.
USE MyDatabase
CREATE USER MyLogin FOR LOGIN MyLogin
ALTER ROLE db_owner ADD MEMBER MyLogin
GO
https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-role-transact-sql
Ответ 4
Я хотел бы предложить другое решение, которое может помочь кому-то...
-- create the user on the master database
USE [master]
GO
CREATE LOGIN [MyUserName] WITH PASSWORD=N'MyPassword'
CREATE USER [MyUserName] FOR LOGIN [MyUserName]
GO
-- create the user on the target database for the login
USE [MyDatabaseName]
GO
CREATE USER [MyUserName] FOR LOGIN [MyUserName]
GO
-- add the user to the desired role
USE [MyDatabaseName]
GO
ALTER ROLE [db_owner] ADD MEMBER [MyUserName]
GO