Поделиться через


CREATE USER (Transact-SQL)

Добавляет нового пользователя в текущую базу данных.

Значок ссылки на разделСоглашения о синтаксисе в 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, сертификатом или асимметричным ключом.

ms173463.note(ru-ru,SQL.90).gifВажно!
Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом фиксированной серверной роли sysadmin. Для всех членов роли sysadmin по умолчанию установлена схема dbo.

Предложение WITHOUT LOGIN создает пользователя, который не сопоставляется с именем входа SQL Server. Такой пользователь может подключиться к базе данных как guest.

Имена пользователей, сопоставленные именам входа SQL Server, сертификатам или асимметричным ключам, не могут содержать обратную косую черту (\).

С помощью инструкции CREATE USER нельзя создать пользователя guest, потому что пользователь guest уже существует в каждой базе данных. Активировать пользователя guest можно, предоставив ему разрешение CONNECT, как показано далее:

GRANT CONNECT TO guest;
GO

Сведения о пользователях базы данных можно найти в представлении каталога sys.database_principals (Transact-SQL).

ms173463.Caution(ru-ru,SQL.90).gifВнимание!
В SQL Server 2005 поведение схем отличается от их поведения в предыдущих версиях SQL Server. Код, предполагающий, что схемы эквивалентны пользователям базы данных, может возвращать неверные результаты. Старые представления каталога содержат таблицу 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 с паролем на сервер, а затем в базе данных AdventureWorks создается соответствующий пользователь AbolrousHazem.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

Б. Создание пользователя базы данных со схемой по умолчанию

В следующем примере вначале создается имя входа WanidaBenshoof с паролем на сервер, а затем в базе данных создается соответствующий пользователь Wanida со схемой по умолчанию Marketing.

CREATE LOGIN WanidaBenshoof 
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks;
CREATE USER Wanida FOR LOGIN WanidaBenshoof 
    WITH DEFAULT_SCHEMA = Marketing;
GO

В. Создание пользователя базы данных из сертификата

В следующем примере в базе данных создается пользователь JinghaoLiu из сертификата CarnationProduction50.

USE AdventureWorks;
CREATE CERTIFICATE CarnationProduction50
    WITH SUBJECT = 'Carnation Production Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO 

См. также

Справочник

sys.database_principals (Transact-SQL)
ALTER USER (Transact-SQL)
DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)

Другие ресурсы

Отделение пользователей от схем

Справка и поддержка

Получение помощи по SQL Server 2005