Как создать нового пользователя в базе данных 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];
Примечание при подключении к базе данных при использовании автономного пользователя необходимо всегда указывать базу данных в соединении строка.
традиционный логин сервера-пользователь базы данных (Pre v 12)
чтобы добавить к ответу @Igorek, вы можете сделать следующее В SQL Server Management Studio:
создайте новый логин на сервере
В master
(через Available databases
выпадают в SSMS-это потому, что USE master
не работает в Azure):
создать логин:
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;