2009-07-20 17 views
35

Ho cercato di capire perché SQL Server ha lo schema db_owner e il ruolo db_owner? Questo è molto confuso. Ho cercato risposte e finora questo è il modo in cui la mia comprensione va:Ruoli, schemi, utenti di SQL Server

  1. Tutte le tabelle e gli oggetti (come i vincoli, ecc.) Appartengono a uno schema. DBO è lo schema predefinito.
  2. A un utente può essere concessa l'autorizzazione per modificare ciascun oggetto o lo schema. Un'autorizzazione sullo schema estende l'autorizzazione a tutti gli oggetti all'interno di quello schema. Quindi non devi concedere l'autorizzazione per ogni singolo oggetto.
  3. Un ruolo raggruppa le autorizzazioni insieme per comodità.

Se ciò non è corretto fammelo sapere. Ma penso che sia andata così bene. Ora le mie domande sono:

  1. Che cos'è esattamente lo schema db_owner come visualizzato nella finestra di dialogo "Utente database" di SQL Server Management Studio? E nella stessa finestra di dialogo, si definisce "Schema predefinito" come dbo. Perché non sono i due uguali? Se, per impostazione predefinita, SQL Server utilizza dbo per creare tutti gli oggetti, a cosa serve db_owner?
  2. Perché un utente desidera possedere uno schema? Stai già assegnando permessi/ruoli. Cosa ti dà il possesso di db_accessadmin?
  3. Puoi dare un esempio di quando crei oggetti sotto lo schema db_owner e lo schema db_accessadmin? In altre parole qualcuno usa legittimamente questi schemi?
+0

concordati. Era ridicolo da parte loro creare due diversi tipi di oggetti (uno schema e un ruolo) con lo stesso nome. – LarryBud

risposta

23

Uno schema di SQL Server è semplicemente contenitore di oggetti, ad esempio tabelle, stored procedure, ecc un ruolo del database è un gruppo di principi, come Windows account di accesso, gli utenti di SQL Server, ecc

Il l'idea è che puoi avere un ruolo di "IT" e avere tutti gli utenti IT sotto questo ruolo. Quindi è possibile uno schema denominato "IT" e tutte le tabelle che appartengono all'IT in questo caso. Immediatamente SQL Server crea schemi di corrispondenza per ciascun utente e ruolo predefiniti nel database, ma penso che l'intenzione sia di personalizzarla in base alle esigenze della propria organizzazione.

This article ha ulteriori informazioni sulle differenze tra proprietari e schemi. This question su Stack Overflow può anche essere utile.

+0

L'articolo è piuttosto utile. Quindi dalla tua risposta prendo lo schema db_accessadmin è inutile ed è un effetto collaterale del ruolo db_accessadmin. Nessuno crea tabelle con lo schema db_accessadmin, ma invece si utilizza uno schema più pertinente per i dati. C'è un elenco di cosa ti offre la "proprietà" di un oggetto/schema? Sono tutti i diritti immaginabili per quell'oggetto? O potresti essere un proprietario senza diritti di lettura? – Budric

+0

Vedere questo articolo http://msdn.microsoft.com/en-us/library/ms189462.aspx per ulteriori dettagli. Nello specifico, "Gli oggetti creati all'interno di uno schema sono di proprietà del proprietario dello schema e hanno un ID_principale NULL in sys.objects.La proprietà degli oggetti contenuti nello schema può essere trasferita a qualsiasi principal a livello di database, ma il proprietario dello schema mantiene sempre CONTROL permesso sugli oggetti all'interno dello schema. " Quindi sembra che un proprietario abbia sempre il pieno controllo sugli oggetti in uno schema. – tbreffni

0

Sto citando il seguito dal seguente link.

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

navi di SQL Server con dieci schemi predefiniti che hanno gli stessi nomi come il built-negli utenti del database e ruoli. Questi esistono principalmente per la retrocompatibilità. È possibile eliminare gli schemi che hanno lo stesso nome dei ruoli di database fissi se non sono necessari.Non è possibile eliminare i seguenti schemi:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA
Problemi correlati