Comment créer un nouvel utilisateur dans une base de données SQL Azure?

je suis en train d'utiliser le modèle suivant:

-- =================================================
-- 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

je voudrais créer un utilisateur user1 avec un mot de passe de 'user1pass'. Je me suis connecté avec ma base de données par défaut "authentification" et j'ai une fenêtre de requête ouverte.

Mais le modèle n'a pas de sens pour moi. Par exemple, Quel est le nom de système, où dois-je fournir le mot de passe et que dois-je utiliser comme default_schema?

L'utilisateur doit avoir le pouvoir de tout faire. Mais comment puis-je c'est fait si je fais de l'utilisateur un propriétaire de base de données?

pour l'instant j'ai essayé:

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

donner:

Msg 102, Niveau 15, État 1, Ligne 1 syntaxe Incorrecte près de ','.

et:

CREATE USER user1
    FOR LOGIN user1
    WITH DEFAULT_SCHEMA = dbo
GO

donner:

Msg 15007, Niveau 16, État 1, Ligne 1 'user1' i

n'est pas un identifiant valide ou vous n'avez pas la permission.

42
demandé sur DineshDB 2013-09-30 17:02:39

8 réponses

consultez ce lien pour toutes les informations : https://azure.microsoft.com/en-us/blog/adding-users-to-your-sql-azure-database/

Vous devez d'abord créer un login pour SQL Azure, sa syntaxe est la suivante:

CREATE LOGIN username WITH password='password';

cette commande doit être exécutée en Master db. Ensuite seulement, vous pouvez exécuter des commandes pour créer un utilisateur dans la base de données. La façon dont SQL Azure ou SQL Server fonctionne est qu'il y a une connexion créée d'abord au niveau du serveur et puis il est mappé à un utilisateur dans chaque base de données.

HTH

24
répondu Igorek 2016-09-20 16:41:19

Modifier les Contenus de l'Utilisateur (v12 et plus tard)

à partir de Sql Azure 12, les bases de données seront créées comme Bases De Données Contenues qui permettra aux utilisateurs d'être créés directement dans votre base de données, sans avoir besoin d'une connexion serveur via master.

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

notez lors de la connexion à la base de données lorsque vous utilisez un utilisateur contenu que vous devez toujours spécifier la base de données dans la connexion chaîne.

Connecting via a contained User

connexion au serveur traditionnel-utilisateur de la base de données (avant v 12)

juste pour ajouter à la réponse de @Igorek, vous pouvez faire ce qui suit dans Sql Server Management Studio:

Créer la nouvelle Connexion sur le serveur

master (via le Available databases déroulant dans SSMS - c'est parce que USE master ne fonctionne pas dans Azure):

enter image description here

créer la connexion:

CREATE LOGIN username WITH password='password';

Créer le nouvel Utilisateur dans la base de données

Interrupteur à la base de données (via les bases de données disponibles déroulant, ou une nouvelle connexion)

CREATE USER username FROM LOGIN username;

(j'ai supposé que vous voulez que l'utilisateur et les connexions à nouer username, mais changez si ce n'est pas le cas.)

Maintenant ajouter l'utilisateur à la sécurité les rôles

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

(évidemment, un utilisateur d'application devrait avoir moins de privilèges que dbo.)

70
répondu StuartLC 2017-09-15 06:44:36

j'ai suivi les réponses ici, mais quand j'ai essayé de me connecter avec mon nouvel utilisateur, j'ai un message d'erreur indiquant "The server principal 'newuser' is not able to access the database 'master' under the current security context".

j'ai aussi créé un nouvel utilisateur dans la table principale pour me connecter avec succès avec 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
15
répondu nthpixel 2016-03-04 01:04:40

j'utilise console de Gestion d'Azur outil de CodePlex, avec une interface graphique très utile, essayez-la. Vous pouvez enregistrer le type de code.

10
répondu Jorge 2013-10-03 08:36:18

Vous pouvez simplement créer un utilisateur contenu dans SQL DB V12.

Create user containeduser with password = 'Password'

la connexion de L'Utilisateur contenu est plus efficace que la connexion à la base de données en utilisant la connexion créée par master. Vous pouvez trouver plus de détails @ http://www.sqlindepth.com/contained-users-in-sql-azure-db-v12/

7
répondu Sirisha Chamarthi 2015-07-03 03:33:51

créer un utilisateur, puis ajouter un utilisateur à un rôle spécifique:

CREATE USER [test] WITH PASSWORD=N'<strong password>'
go
ALTER ROLE [db_datareader] ADD MEMBER [test]
go
1
répondu Antonio Santise 2018-07-13 13:47:01

je pense que les modèles utilisent la notation suivante: Nom de la variable, type de variable, valeur par défaut.

Sysname est un type de données intégré qui peut contenir les noms des objets du système.

Il est limité à 128 caractères Unicode.

-- same as sysname type
declare @my_sysname nvarchar(128);
0
répondu CRAFTY DBA 2013-09-30 13:15:48

j'ai trouvé ce lien très helpful:

https://azure.microsoft.com/en-gb/documentation/articles/sql-database-manage-logins/

Il donne des détails sur des choses comme:

- Azure SQL Base de données de compte d'abonné

- Utiliser les utilisateurs Azure Active Directory pour accéder à la base de données

- Comptes principaux au niveau du serveur (accès illimité)

- Ajout d'utilisateurs au dbmanager rôle de base de données

j'ai utilisé ce et la réponse de Stuart est la suivante:

Sur le master base de données (voir le lien qui dispose des autorisations sur ce sujet):

CREATE LOGIN [MyAdmin] with password='ReallySecurePassword'

Et puis sur la base de données en question:

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

vous pouvez aussi créer des utilisateurs comme celui-ci, selon le lien:

CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
0
répondu noelicus 2016-09-07 18:42:32