Подтвердить что ты не робот

Как создать нового пользователя в базе данных 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, Level 15, State 1, Line 1
Incorrect syntax near ','.

и

CREATE USER user1
    FOR LOGIN user1
    WITH DEFAULT_SCHEMA = dbo
GO

Дарение:

Msg 15007, Level 16, State 1, Line 1
'user1' is not a valid login or you do not have permission.
4b9b3361

Ответ 1

Посмотрите эту ссылку для всей информации: 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 заключается в том, что на сервере впервые создается логин, а затем он сопоставляется с пользователем в каждой базе данных.

НТН

Ответ 2

Изменить - Содержащийся пользователь (v12 и более поздний)

Как и в случае с Sql Azure 12, базы данных будут создаваться как Содержащиеся базы данных, которые позволят создавать пользователей непосредственно в вашей базе данных без требуется для входа в сервер через master.

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

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

Подключение через пользователя

Традиционный вход в сервер - Пользователь базы данных (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.)

Ответ 3

Я следил за ответами здесь, но когда я попытался подключиться к новому пользователю, у меня появилось сообщение об ошибке "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

Ответ 5

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

Create user containeduser with password = 'Password'

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

Ответ 6

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

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

Он ограничен 128 символами Unicode.

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

Ответ 7

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

Подробности:  - Абонентская база Azure SQL Database
 - Использование пользователей 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 [[email protected]] FROM EXTERNAL PROVIDER;