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, сертификатом или асимметричным ключом.
Важно! |
---|
Значение параметра 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).
Внимание! |
---|
В 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)
Другие ресурсы
Отделение пользователей от схем