Как создать нового пользователя в базе данных 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.
Ответы
Ответ 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
Ответ 4
Я использую инструмент консоли Azure Management от CodePlex с очень полезным графическим интерфейсом, попробуйте. Вы можете сохранить тип кода.
Ответ 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;