Si j'ai un ensemble de SQL (c'est-à-dire un script contenant des instructions SQL arbitraires), y a-t-il un moyen de savoir quelles sont les permissions minimales requises pour exécuter le SQL?Existe-t-il un outil pour vérifier les privilèges minimum requis pour un ensemble de sql?
(je pense à quelque chose de similaire aux « autorisations requises par l'application » zone dans Visual Studio lorsque vous affichez l'onglet Sécurité sur les propriétés du projet page d'une application WinForms.)
Un peu de background:
Dans le cadre d'une application, j'ai un ensemble de scripts de mise à niveau (qui modifient les données dans les tables et modifient le schéma) qui seront exécutés sur la base de données d'un client. Je souhaite analyser ces scripts de mise à niveau pour tout problème d'autorisation potentiel avant de les déployer, car le client qui les exécute peut avoir une connexion limitée à SQL Server. Les types de choses qui se produisent dans ces scripts sont généralement l'ajout/la suppression/la modification de tables/colonnes/index, mais je sélectionne aussi à partir des vues de schéma d'informations et des tables système.
EDIT:
J'ai la gestion des erreurs en place pour faire face à ces occasions où un utilisateur ne dispose pas des autorisations nécessaires pour faire une mise à niveau. Je vérifie également actuellement que l'utilisateur exécutant la mise à niveau est db_owner
, mais je suis plus préoccupé par les choses en dehors de la base de données en cours de mise à niveau. Par exemple, les scripts utilisent souvent les tables système pour obtenir des informations sur le schéma de la base de données afin de décider si une action spécifique doit être effectuée. J'aimerais savoir quelles autorisations sont nécessaires pour accéder à ces tables. Un autre exemple consiste à activer la compression de page - l'utilisateur a-t-il besoin d'autorisations spécifiques pour le faire? Je voudrais faire la vérification sur les scripts de mise à niveau avant de les déployer, car c'est une bien meilleure expérience utilisateur de savoir que vous avez besoin de certaines autorisations auparavant, plutôt que d'échouer avec une erreur.
+1 notre dba (mcdba un mct) ne m'a pas aidé avec la même chose et il y a quelques fois fini avec transaction et vérifiant pour numéro d'erreur spécial –
J'ai piégeage erreur enroulé autour où cet SQL s'exécute, mais je ' d aimer être en mesure de savoir à l'avance quelles sont les autorisations requises plutôt que de les faire échouer, puis découvrir que cela est dû à un utilisateur sous-privilégié qui tente de l'exécuter. – adrianbanks
au moins vous pouvez vérifier sysdba ou dbowner :( –