Le script de base de données SQL server rôle?
J'ai besoin de faire un script pour copier un particulier le rôle de base de données à partir de SQL server à l'autre.
Est-il un moyen facile de générer un script qui crée le rôle et toutes les autorisations de rôle?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir ce dont vous avez besoin avec un script comme ceci:
J'ai développé sur Mario Eie réponse:
Ce script génère GRANT pour vos rôles. Je l'aime, qu'il prend en charge colonne leven autorisations. Il doit être adapté à votre besoin (c'est à dire. améliorer pour plus de bases de données complexes, concaténer des états et de l'exécuter, inclure l'instruction de création pour votre rôle). Mais juste pour vous donner une idée:
J'ai fait un joli script complet que non seulement les scripts en dehors de toutes les autorisations, mais aussi tous les membres, et de mettre le glaçage sur le gâteau formats de sortie pour faciliter le copier/coller dans une nouvelle fenêtre de requête. J'ai posté le script pour mon blog et mettre à jour de temps en temps, mais est inférieure à la version actuelle, qui devrait couvrir la plupart des bases:
De la note, vous pouvez exécuter dans une situation où le sp_AddRoleMember système sp ajoute utilisateur(s) de la DB qui n'était pas là. Dans ce cas, même si le ou les utilisateur(s) est ajoutée, ils ne sont PAS accordé l'autorisation CONNECT, et toute tentative de connexion faite par l'utilisateur ou le groupe peut générer une connexion de l'utilisateur en erreur. Pour corriger ce problème, vous devez exécuter par l'utilisateur/de groupe au sein de la db:
DANS SSMS en cliquant-droit sur l'utilisateur/login/rôle de nœud et en sélectionnant 'Script' sera le script de ce particulier de l'utilisateur /login /rôle. Vous ne pouvez pas le script rôle mebership cette manière.
Visual Studio avec la Base de données Drvelopment' option et Porte rouge SQL de Comparer peut générer le script de modification entre les bases de données, cela inclut les utilisateurs, les rôles et le rôle de l'adhésion.
Généré par VS l'appartenance au rôle ressemble à ceci:
Si vous n'avez pas de VS, vous pouvez soit écrire ceux manuellement, ou de créer un script sql pour les générer.
Je suis sûr qu'il doit y avoir également un outil gratuit pour faire quelque chose comme cela, mais comme je n'ai pas besoin que j'ai de Visual Studio, je n'ai jamais cherché.
Modifier: je viens de réaliser que je suis la réponse à une mauvaise question, vous me demandez une autorisation de rôle et je peux vous dire à propos de l'appartenance de rôle. Désolé à ce sujet. Je vais quitter cette réponse ici dans le cas où il peut être utile à quelqu'un d'autre. Réponse par Alex Aza semble bon.
CREATE ROLE [RoleName] AUTHORIZATION [dbo]
j'ai besoin d'obtenir les autorisations du rôle tropEXECUTE sp_addrolemember @rolename = N'db_datareader', @membername = N'DOMAIN\User';
C'est une douleur, mais tout ce que vous cherchez est dans un couple de système de vues: sys.database_permissions, sys.database_principals, et sys.database_role_members. La raison pour laquelle il n'est pas un plaisir, car le major_id et minor_id dans sys.database_permissions ont des significations différentes en fonction de la catégorie de la colonne. Mais si vos droits sont relativement simples, alors ce pourrait ne pas être si mauvais. Donnez-lui un coup d'oeil et voir ce que vous pouvez obtenir.
J'ai ajouté un script supplémentaire de la fonctionnalité pour le code ci-dessus. L'sélectionnez scripts sur le rôle et les autorisations, donc vous avez besoin pour exécuter le résultat: