CREATE USER (Transact-SQL)
Добавляет нового пользователя в текущую базу данных.
Синтаксис
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
| CERTIFICATE cert_name
| ASYMMETRIC KEY asym_key_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
Аргументы
user_name
Имя, по которому пользователь идентифицируется в этой базе данных. Аргумент user_name имеет тип sysname. Он может иметь длину до 128 символов.LOGIN login_name
Задает имя входа SQL Server, для которого создается пользователь базы данных. Имя login_name должно быть допустимым именем на сервере. При входе в SQL Server под этим именем база данных запросит имя и идентификатор созданного пользователя базы данных.CERTIFICATE cert_name
Указывает сертификат, для которого создается пользователь базы данных.ASYMMETRIC KEY asym_key_name
Указывает асимметричный ключ, для которого создается пользователь базы данных.WITH DEFAULT_SCHEMA **=**schema_name
Указывает первую схему, которую найдет сервер, после того, как он получит имена объектов для пользователя данной базы данных.WITHOUT LOGIN
Указывает, что пользователь не должен сопоставляться с существующим именем входа.
Замечания
Если предложение FOR LOGIN не указано, новый пользователь базы данных будет сопоставлен с именем входа SQL Server, имеющим такое же имя.
Если значение DEFAULT_SCHEMA не заполнено, пользователь базы данных в качестве схемы по умолчанию будет использовать dbo. В качестве значения DEFAULT_SCHEMA можно задать схему, в настоящий момент не существующую в базе данных. Значение DEFAULT_SCHEMA может быть установлено до создания схемы, на которую оно указывает. Значение DEFAULT_SCHEMA не может указываться при создании пользователя, сопоставленного с группой Windows, сертификатом или асимметричным ключом.
Важно! |
---|
Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом предопределенной роли сервера sysadmin. Для всех членов предопределенной роли сервера sysadmin по умолчанию установлена схема dbo. |
Предложение WITHOUT LOGIN создает пользователя, который не сопоставляется с именем входа SQL Server. Такой пользователь может подключиться к базе данных как guest.
Имена пользователей, сопоставленные с именами входа SQL Server, сертификатами или асимметричными ключами, не могут содержать обратную косую черту (\).
С помощью инструкции CREATE USER нельзя создать пользователя guest, потому что пользователь guest уже существует в каждой базе данных. Активировать пользователя guest можно, предоставив ему разрешение CONNECT, как показано далее:
GRANT CONNECT TO guest;
GO
Данные о пользователях базы данных отображаются в представлении каталога sys.server_principals.
Внимание! |
---|
Начиная с SQL Server 2005, поведение схем изменилось. В результате программный код, предполагающий, что схемы эквивалентны пользователям базы данных, возможно, не будет более возвращать правильные результаты. Старые представления каталога, включая sysobjects, не должны использоваться в той базе данных, где когда-либо выполнялась любая из следующих инструкций DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. В таких базах данных необходимо использовать новые представления каталогов. Новые представления каталога учитывают разделение участников и схем, введенное в SQL Server 2005. Дополнительные сведения о представлениях каталогов см. в разделе Представления каталогов (Transact-SQL). |
Разрешения
Необходимо разрешение ALTER ANY USER для базы данных.
Примеры
А. Создание пользователя базы данных
В следующем примере вначале создается имя входа AbolrousHazem с паролем на сервер, а затем в базе данных AdventureWorks2008R2 создается соответствующий пользователь AbolrousHazem.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
Б. Создание пользователя базы данных со схемой по умолчанию
В следующем примере вначале создается имя входа WanidaBenshoof с паролем на сервер, а затем в базе данных создается соответствующий пользователь Wanida со схемой по умолчанию Marketing.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2008R2;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
В. Создание пользователя базы данных из сертификата
В следующем примере в базе данных создается пользователь JinghaoLiu из сертификата CarnationProduction50.
USE AdventureWorks2008R2;
CREATE CERTIFICATE CarnationProduction50
WITH SUBJECT = 'Carnation Production Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO
Г. Создание и использование пользователя без имени входа
В следующем примере создается пользователь базы данных CustomApp, который не сопоставляется с именем входа SQL Server. Затем пользователю предоставляется разрешение adventure-works\tengiz0 для олицетворения пользователя CustomApp.
USE AdventureWorks2008R2 ;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO
Чтобы использовать учетные данные CustomApp, пользователь adventure-works\tengiz0 выполняет следующую инструкцию.
EXECUTE AS USER = 'CustomApp' ;
GO
Чтобы восстановить учетные данные adventure-works\tengiz0, пользователь выполняет следующую инструкцию.
REVERT ;
GO
См. также