J'essaie de créer un utilisateur de base de données à partir de C # dans Azure SQL Server. Mais je dois définir sa base de données par défaut ( DEFAULT_DATABASE
) mais le script ne fonctionne pas sur Azure.
Est-ce que quelqu'un sait comment puis-je le faire?
CREATE USER newlogin FOR LOGIN newlogin; ALTER LOGIN newlogin WITH DEFAULT_DATABASE = myDatabase;
4 Réponses :
Cela peut être fait dans Azure mais, comme @Larnu y fait allusion, ce n'est pas vraiment simple. Les conseils donnés dans leur réponse fonctionneront pour une seule connexion, mais ce n'est probablement pas quelque chose de pratique ou souhaitable dans n'importe quel scénario de production. Je suggérerais de faire ce qui suit:
Le code pour cela est légèrement différent dans Azure Sql Server et sur site:
-- run in [master] create login [YourGroupName] from external provider; alter login [YourGroupName] with default_database = [YourDefaultDatabase]; -- run in [YourDefaultDatabase] create user [YourGroupName] from login [YourGroupName];
Modifier:[
Les utilisateurs d'Azure Sql Server sont généralement contenus dans une seule base de données et n'existent même pas au "niveau du serveur"; plus d'informations peuvent être trouvées ici . Si vous souhaitez simplement créer un utilisateur dans une base de données Azure Sql Server, tout ce que vous avez à faire est d'écrire une instruction sous la forme de create user [YourUserName] with password = 'YourSecret';
. Notez que cela suppose que vous êtes déjà connecté à la base de données dans laquelle vous avez l'intention de créer l'utilisateur. Si vous êtes dans un contexte tel que [master]
, et aucune possibilité de modifier la chaîne de connexion, vous devrez alors utiliser ChangeDatabase d'abord.
La base de données par défaut est toujours la base de données [master]
. Utilisez plutôt le paramètre de base de données de chaîne de connexion / catalogue initial comme base de données par défaut. Pour ajouter un utilisateur spécifique, connectez-vous au maître du serveur de base de données en utilisant le compte du propriétaire.
Ensuite, dans [master]
db, vous pouvez créer un nouvel utilisateur de connexion, par exemple:
USE [myseconddb] GO CREATE USER dev_team2 WITH PASSWORD = 'P@ssW0rd' GO EXEC sp_addrolemember N'db_owner', N'dev_team2' GO GRANT EXECUTE TO dev_team2 GRANT INSERT TO dev_team2 GRANT DELETE TO dev_team2 GRANT UPDATE TO dev_team2 GRANT SELECT TO dev_team2 GO
Ensuite, passez à la base de données souhaitée pour la connexion à dev_team
. Créez l'utilisateur et accordez l'accès à l'utilisateur dans cette base de données, par exemple:
USE [myseconddb] GO CREATE USER dev_team FOR LOGIN dev_team GO GRANT EXECUTE TO dev_team GRANT INSERT TO dev_team GRANT DELETE TO dev_team GRANT UPDATE TO dev_team GRANT SELECT TO dev_team GO
Ou passez simplement à la base de données souhaitée,
CREATE LOGIN dev_team WITH PASSWORD = 'P@ssW0rd' GO
L'utilisateur dev_team
et dev_team2
ne peut alors pas accéder à d'autres bases de données sauf [myseconddb]
.
Vous pouvez ensuite utiliser dans la chaîne de connexion, par exemple userid dev_team2
et mot de passe P @ ssW0rd
et catalogue initial nom myseconddb
(par défaut).
J'espère que cela vous aidera.
merci, mais ne fonctionne pas encore, car le problème est si vous souhaitez vous connecter au serveur SQL avec le studio de gestion.
Eh bien, ce n'est pas votre question principale. SSMS construit la chaîne de connexion lorsque nous saisissons les informations de connexion. Est juste une chaîne de connexion. Et vous pouvez spécifier le catalogue initial avec le nom de la base de données.
sélectionnez la base de données master , si elle n'est pas déjà sélectionnée et créez la connexion
EXEC sp_addrolemember N'db_owner', N'myAccountName'
cette étape consiste à accorder un connexion accès à la base de données principale et pouvoir se connecter à SSMS sans changer la base de données par défaut dans la page de connexion
CREATE USER [myAccountName] FOR LOGIN [myAccountName] WITH DEFAULT_SCHEMA = [dbo]
basculez sur votre base de données utilisateur et créez l'utilisateur pour la connexion
CREATE USER [myAccountName] FOR LOGIN [myAccountName] WITH DEFAULT_SCHEMA = [dbo]
accordez les autorisations nécessaires à votre utilisateur
CREATE LOGIN [myAccountName] WITH PASSWORD = 'myPassword' GO