Est-il possible de configurer SQL Server pour donner aux développeurs un accès en lecture seule au contenu des procédures stockées sur notre base de données de production?
Accordez-leur le privilège VIEW DEFINITION
à ces procs, voir ici http://msdn.Microsoft.com/en-us/library/ms175808.aspx
Il y a
Portée du serveur
Portée de la base de données
Portée du schéma
Entités individuelles
vous pouvez également utiliser une requête pour générer un script. donc si vous avez un utilisateur Bob
select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema)
+ '.' + quotename(specific_name)
+ ' TO ' + 'BOB'
from INFORMATION_SCHEMA.routines
where routine_type = 'PROCEDURE'
Cela vous donnera quelque chose comme ça, que vous pourrez ensuite exécuter
GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO BOB
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO BOB
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO BOB
Exemple d’exécution au niveau de la portée du schéma pour dbo.
accorde la définition de vue sur le schéma :: [dbo] à BOB
J'avais besoin d'accorder l'accès à un compte de domaine .. la syntaxe était la suivante
attribuer la définition de vue sur le schéma :: [dbo] à "domaine\BOB"
Ma variante pour toutes les procédures de base de données:
select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name +
'] TO ' + '[domain\username]'
from sys.all_objects
where type_desc = 'SQL_STORED_PROCEDURE'
and schema_id <> schema_id('sys')
Bien que je sache que la réponse à la question a pris du retard, mais pour ceux qui sont venus ici à la recherche d’une réponse (comme je l’ai fait il ya quelques minutes) au moins dans SQL management studio 2014, vous pouvez modifier le compte dans la zone SECURABLES et cochez toutes les cases de VIEW auxquelles vous souhaitez qu’elles aient accès.
Cela fait ce qui précède sans avoir à exécuter de scripts.