Как создать нового пользователя в базе данных SQL Azure?

Я пытаюсь использовать следующий шаблон:

-- =================================================
-- Create User as DBO template for SQL Azure Database
-- =================================================
-- For login <login_name, sysname, login_name>, create a user in the database
CREATE USER <user_name, sysname, user_name>
    FOR LOGIN <login_name, sysname, login_name>
    WITH DEFAULT_SCHEMA = <default_schema, sysname, dbo>
GO

-- Add user to the database owner role
EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>'
GO

Я хотел бы создать пользователя под названием user1 с паролем "user1pass". Я подключился к моей базе данных по умолчанию "аутентификация", и у меня открыто окно запроса.

но шаблон не имеет смысла для меня. Например, что такое sysname, где я могу указать пароль и что я должен использовать в качестве default_schema?

конкретный пользователь должен иметь возможность делать все. Но как это сделать Я настроил его так, чтобы он мог все делать, это сделано, если я сделаю пользователя владельцем базы данных?

до сих пор я пробовал:

CREATE USER user1, sysname, user1
    FOR LOGIN user1, sysname, user1
    WITH DEFAULT_SCHEMA = dbo, sysname, dbo
GO

даем:

Msg 102, Уровень 15, состояние 1, строка 1 неправильный синтаксис рядом с','.

и:

CREATE USER user1
    FOR LOGIN user1
    WITH DEFAULT_SCHEMA = dbo
GO

даем:

Msg 15007, Уровень 16, состояние 1, строка 1 'user1' i

s не действительный логин или у вас нет разрешения.

8 ответов


проверьте эту ссылку для всей информации : https://azure.microsoft.com/en-us/blog/adding-users-to-your-sql-azure-database/

сначала вам нужно создать логин для SQL Azure, его синтаксис выглядит следующим образом:

CREATE LOGIN username WITH password='password';

эта команда должна выполняться в master db. Только после этого вы можете запускать команды для создания пользователя в базе данных. Способ работы SQL Azure или SQL Server заключается в том, что сначала на уровне сервера создается имя входа, а затем сопоставлен с пользователем в каждой базе данных.

HTH


Edit-Contained User (v12 и более поздние версии)

начиная с Sql Azure 12 базы данных будут создаваться как Автономные Базы Данных что позволит пользователям создаваться непосредственно в вашей базе данных, без необходимости входа на сервер через master.

CREATE USER [MyUser] WITH PASSWORD = 'Secret';
ALTER ROLE [db_datareader] ADD MEMBER [MyUser];

Примечание при подключении к базе данных при использовании автономного пользователя необходимо всегда указывать базу данных в соединении строка.

Connecting via a contained User

традиционный логин сервера-пользователь базы данных (Pre v 12)

чтобы добавить к ответу @Igorek, вы можете сделать следующее В SQL Server Management Studio:

создайте новый логин на сервере
В master (через Available databases выпадают в SSMS-это потому, что USE master не работает в Azure):

enter image description here

создать логин:

CREATE LOGIN username WITH password='password';

создать нового пользователя в базе данных
Переключитесь на фактическую базу данных (снова через выпадающий список доступных баз данных или новое соединение)

CREATE USER username FROM LOGIN username;

(я предположил, что вы хотите, чтобы пользователь и логины связывались как username, но измените, если это не так.)

теперь добавьте пользователя в соответствующие роли безопасности

EXEC sp_addrolemember N'db_owner', N'username'
GO

(очевидно, пользователь приложения должен иметь меньше привилегий, чем dbo.)


Я следил за ответами здесь, но когда я попытался связаться с моим новым пользователем, я получил сообщение об ошибке"The server principal 'newuser' is not able to access the database 'master' under the current security context".

мне также пришлось создать нового пользователя в главной таблице, чтобы успешно войти в систему с SSMS.

USE [master]
GO
CREATE LOGIN [newuser] WITH PASSWORD=N'blahpw'
GO
CREATE USER [newuser] FOR LOGIN [newuser] WITH DEFAULT_SCHEMA=[dbo]
GO

USE [MyDatabase]
CREATE USER newuser FOR LOGIN newuser WITH DEFAULT_SCHEMA = dbo
GO
EXEC sp_addrolemember N'db_owner', N'newuser'
GO

Я использую средство консоли управления Azure CodePlex, с очень полезным GUI, попробуйте. Вы можете сохранить тип кода.


вы можете просто создать автономного пользователя в SQL DB V12.

Create user containeduser with password = 'Password'

вход пользователя в систему более эффективен, чем вход в базу данных, используя логин, созданный master. Вы можете найти более подробную информацию @ http://www.sqlindepth.com/contained-users-in-sql-azure-db-v12/


создайте пользователя, а затем добавьте пользователя в определенную роль:

CREATE USER [test] WITH PASSWORD=N'<strong password>'
go
ALTER ROLE [db_datareader] ADD MEMBER [test]
go

Я думаю, что шаблоны используют следующие обозначения: имя переменной, тип переменной, значение по умолчанию.

тип sysname-это встроенный тип данных, который может содержать имена системных объектов.

он ограничен 128 символами Юникода.

-- same as sysname type
declare @my_sysname nvarchar(128);

я нашел эту ссылку, очень helpful:
https://azure.microsoft.com/en-gb/documentation/articles/sql-database-manage-logins/

он детализирует такие вещи, как:
- Учетная запись подписчика базы данных SQL Azure
- Использование пользователей Azure Active Directory для доступа к базе данных
- Основные учетные записи уровня сервера (неограниченный доступ)
- Добавление пользователей в dbmanager роли базы данных

я использовал это и ответ Стюарта, чтобы сделать следующий:
На master база данных (см. ссылку о том, у кого есть разрешения на это):

CREATE LOGIN [MyAdmin] with password='ReallySecurePassword'

а затем в базе данных, о которой идет речь:

CREATE USER [MyAdmin] FROM LOGIN [MyAdmin]
ALTER ROLE db_owner ADD MEMBER [MyAdmin]

вы также можете создавать таких пользователей, согласно ссылке:

CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;