web-dev-qa-db-fra.com

Accès en lecture seule au contenu de la procédure stockée

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?

26
adam0101

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
42
SQLMenace

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

MSDN

9
slachterman

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"

6
Alex K.

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')
1
user4319873

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.

0
user202944