2009-07-20 9 views
35

J'ai essayé de comprendre pourquoi SQL Server a le schéma db_owner et le rôle db_owner? C'est très déroutant. J'ai cherché des réponses et jusqu'à présent voici comment ma compréhension se passe:Rôles, schémas, utilisateurs SQL Server

  1. Tous les tableaux et objets (tels que les contraintes, etc.) appartiennent à un schéma. DBO étant le schéma par défaut.
  2. Un utilisateur peut être autorisé à modifier chaque objet ou le schéma. Une autorisation sur le schéma étend l'autorisation à tous les objets de ce schéma. Vous n'avez donc pas à accorder d'autorisation sur chaque objet individuel.
  3. Un rôle groupe les autorisations ensemble pour plus de commodité.

Si cela est incorrect, faites-le moi savoir. Mais je pense que jusqu'ici tout va bien. Maintenant, mes questions sont:

  1. Qu'est-ce que exactement le schéma db_owner vu dans la boîte de dialogue "Utilisateur de base de données" de SQL Server Management Studio? Et dans le même dialogue, vous définissez le "Schéma par défaut" comme dbo. Pourquoi les deux ne sont-ils pas les mêmes? Si SQL Server utilise par défaut dbo pour créer tous les objets sous, à quoi sert db_owner?
  2. Pourquoi un utilisateur voudrait-il posséder un schéma? Vous affectez déjà des autorisations/rôles. Qu'est-ce que vous possédez db_accessadmin?
  3. Pouvez-vous donner un exemple de lorsque vous créez des objets sous le schéma db_owner et le schéma db_accessadmin? En d'autres termes, quelqu'un utilise-t-il légitimement ces schémas?
+0

Convenu. C'était ridicule d'eux de créer deux types d'objets différents (un schéma et un rôle) avec le même nom. – LarryBud

Répondre

23

Un schéma SQL Server est simplement conteneur d'objets, tels que des tables, des procédures stockées, etc. Un rôle de base de données est un groupe de principes, tels que les connexions des fenêtres, les utilisateurs du serveur SQL, etc.

Le idée est que vous pouvez avoir un rôle de dire "IT", et ont tous les utilisateurs informatiques sous ce rôle. Ensuite, vous avez un schéma appelé "IT", et toutes les tables qui appartiennent à IT sous cela. Prêt à l'emploi SQL Server crée des schémas correspondants pour chaque utilisateur et chaque rôle par défaut dans la base de données, mais je pense que l'intention est de le personnaliser pour qu'il corresponde aux besoins de votre organisation.

This article a plus d'informations sur les différences entre les propriétaires et les schémas. This question sur Stack Overflow peut également être utile.

+0

L'article est plutôt utile. Donc, à partir de votre réponse, je suppose que le schéma db_accessadmin est inutile et est un effet secondaire du rôle db_accessadmin. Personne ne crée de tables sous le schéma db_accessadmin, mais vous utilisez plutôt un schéma plus pertinent pour vos données. Y a-t-il une liste de ce que la "propriété" d'un objet/schéma vous donne? Est-ce que tous les droits sont imaginables pour cet objet? Ou pourriez-vous être un propriétaire sans droits de lecture? – Budric

+0

Voir cet article http://msdn.microsoft.com/en-us/library/ms189462.aspx pour plus de détails. Plus précisément, les objets créés dans un schéma appartiennent au propriétaire du schéma et ont un NULL principal_id dans sys.objects.La propriété des objets contenus dans le schéma peut être transférée à n'importe quel principal au niveau base de données, mais le propriétaire du schéma conserve toujours CONTROL permission sur les objets dans le schéma. " Il semble donc qu'un propriétaire a toujours un contrôle total sur les objets d'un schéma. – tbreffni

0

Je cite ce qui suit à partir du lien suivant.

https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

navires SQL Server avec dix schémas prédéfinis qui ont les mêmes noms que les utilisateurs et les rôles de base de données intégrée. Ceux-ci existent principalement pour la rétrocompatibilité. Vous pouvez supprimer les schémas portant le même nom que les rôles de base de données fixes si vous n'en avez pas besoin.Vous ne pouvez pas supprimer les schémas suivants:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA
Questions connexes