Articles

Octroi D’une autorisation de définition de vue à un utilisateur ou à un rôle dans SQL Server

Posted by admin

par: Nitin Rana | mise à jour: 2008-09-29 | commentaires (7) | connexes: Plus > vues

problème

dans SQL Server 2005 par défaut, les utilisateurs d’une base de données sp_help, sp_helptext ou la fonction object_definition. Parfois, cela est utile pour permettre aux développeurs ou à d’autres non-administrateurs de voir les définitions d’objets dans une base de données, afin qu’ils puissent créer des objets similaires dans une base de données de test ou de développement., Au lieu d’octroyer des autorisations de niveau supérieur, existe-t-il un moyen d’autoriser les utilisateurs qui n’ont qu’un accès public à voir les définitions d’objets?

Solution

lors de l’émission de sp_help, sp_helptext ou de l’utilisation de la fonction object_definition (), les erreurs suivantes dans SQL 2005 se produiront si l’utilisateur n’a pas les autorisations pour voir les métadonnées de l’objet. Voici quelques exemples de theseerrors.,

EXEC sp_help Customer

renvoie ce qui suit:

Msg 15009, Level 16, State 1, Procedure sp_help, Line 66
The object 'Customer' does not exist in database 'MSSQLTIPS' or is invalid for this operation.

Une sélection par rapport à la fonction OBJECT_DEFINITION renverra une valeur NULL sil’utilisateur n’a pas les autorisations pour voir les métadonnées.

SELECT object_definition (OBJECT_ID(N'dbo.vCustomer'))

renvoie ce qui suit:

NULL

par défaut, les utilisateurs pouvaient voir les définitions d’objets dans SQL Server 2000, maisen SQL Server 2005, cette fonctionnalité a été supprimée pour permettre une autre couche de sécurité., En utilisant une nouvelle fonctionnalité appelée définition de vue, il est possible depermettre aux utilisateurs qui n’ont qu’un accès public la possibilité de voir les définitions d’objets., émettez la déclaration suivante:

USE master GO GRANT VIEW ANY DEFINITION TO User1

pour activer cette fonctionnalité pour une base de données et pour tous les utilisateurs qui ont un accès publicvous pouvez émettre ce qui suit:

USE AdventureWorks GO GRANT VIEW Definition TO PUBLIC

Si vous souhaitez accorder l’accès à le suivant:

USE AdventureWorks GO GRANT VIEW Definition TO User1

Pour désactiver cette fonctionnalité, vous devez émettre les commandes de révocation telles que l’une des suivantes:

USE master GO REVOKE VIEW ANY DEFINITION TO User1 -- or USE AdventureWorks GO REVOKE VIEW Definition TO User1 

Si vous voulez voir quels utilisateurs ont cet accès, vous pouvez émettre les commandes suivantes dans la base de données.,

USE AdventureWorks GO sp_helprotect

Voici deux lignes qui montrent où l’action de définition de vue a été accordée. Le premier sur un objet particulier et le second pour tous les objets de la base de données.

Pour faire un pas de plus, si vous ne souhaitez pas accorder cette autorisation sur allobjects la procédure stockée suivante peut être utilisée pour accorder à tous les objectsor particulier des objets dans une base de données., Ceci est actuellement configuré pour tous les objecttypes, mais cela peut être modifié en incluant moins de types d’objets dans la clause WHERE.

pour l’utiliser, vous pouvez créer cette procédure stockée dans vos bases de données utilisateur et ensuite accorder les autorisations à l’utilisateur approprié au lieu de rendre les choses plus larges pour un utilisateur ou tous les utilisateurs. Remplacez simplement ChangeToYourDatabaseName pour yourdatabase avant de créer.

Une fois cette procédure créée, vous pouvez accorder les autorisations comme suit.Cet exemple accorde une définition de vue à un utilisateur  » userXYZ « dans la base de données » MSSQLTIPS  » pour tous les types d’objets sélectionnés.,s en Ligne:

  • sp_helptext
  • sp_help
  • object_definition
  • Object_Id
  • Create Procedure
  • Schema_Name
  • Schema_ID
  • Remplacer
  • BOURSE
  • DÉFINITION de l’AFFICHAGE

Dernière mise à Jour: 2008-09-29

a Propos de l’auteur
Nitin Rana est un Professionnel Certifié par Microsoft et a actuellement plus de 12 ans d’expérience avec SQL server composants de base.,
voir tous mes conseils
Ressources connexes

  • Plus de conseils pour les développeurs de bases de données…

Leave A Comment