2012-02-11 2 views
8

Quelqu'un pourrait-il me dire comment accorder des autorisations pour la base de données dans SQL Azure?Comment définir les autorisations pour la base de données dans sql azure?

Lorsque j'exécute create table requête, je termine avec un message suivant:

autorisation CREATE TABLE refusée dans la base TestDb

de Merci à l'avance :)

+0

Qu'est-ce que l'utilisateur vous connectez à SQL Azure.? Est-ce un utilisateur qui dispose des autorisations nécessaires pour créer une table (par exemple, l'administrateur créé lors de la création du serveur SQL Azure)? – mcollier

Répondre

0

SQL Azure utilise le même mode de sécurité que SQL Server. On dirait que vous utilisez un utilisateur non-dbo pour créer une table. Je pense que vous pouvez utiliser la commande GRANT pour obtenir l'autorisation appropriée.

+0

SQL Azure fonctionne légèrement différemment de SQL Server en termes de sécurité - utilise différents rôles pour les connexions et les utilisateurs IIRC. – jamiebarrow

1

Vérifiez que vous n'essayez pas d'exécuter le script create table dans la base de données master.

6

Idéalement, vous ne devez attribuer que les autorisations nécessaires à l'utilisateur. Si vous venez de créer un nouvel utilisateur que vous voulez être en mesure faire quoi que ce soit dans la nouvelle base de données, vous pouvez exécuter la commande suivante à l'intérieur de cette base de données à l'aide d'un utilisateur admin serveur:

EXEC sp_addrolemember 'db_owner', 'YourNewUser'; 
3

Jetez un oeil à ces scripts .Ce ne peut pas être le script exact que vous êtes à la recherche for.But cela vous aidera à créer le script que vous voulez

STEP1: ces scripts sur Ran MasterDB azur

CREATE LOGIN mydb_admin 
WITH PASSWORD = 'nnn' 
GO 
CREATE LOGIN mydb_user 
WITH PASSWORD = 'nnnnnnnnn 
GO 

'

Etape 2: administraient les scripts ci-dessous sur l'azur réelle db par exemple, de MYDB

CREATE USER mydb_admin FROM LOGIN mydb_admin ; 
EXEC sp_addrolemember 'db_datareader', 'mydb_admin'; 
EXEC sp_addrolemember 'db_datawriter', 'mydb_admin'; 
GRANT CONNECT TO mydb_admin; 
GRANT SELECT TO mydb_admin; 
GRANT EXECUTE ON [dbo].[procDumpRowsInto_De_Common] TO [mydb_admin] AS [dbo] 

CREATE USER mydb_user FROM LOGIN mydb_user; 
EXEC sp_addrolemember 'db_datareader', 'mydb_user'; 
EXEC sp_addrolemember 'db_executor', 'mydb_user'; 
GRANT CONNECT TO mydb_user; 
GRANT SELECT TO mydb_user; 
+0

Veuillez vérifier le formatage de votre code. il semble que 'GO est mal typé. –

Questions connexes