2011-01-28 17 views
10

Ho trovato gli schemi di SQL Server molto confusi. Forse voi ragazzi potete aiutarmi a chiarire un po 'di confusione. Sto usando SQL Server 2008 Express e MS SQL Server 2008 Management Studio ma penso che le mie domande siano rilevanti per qualsiasi versione di MS SQL Server 2008. Ho sperimentato diversi database e diverse istanze di SQL Server su server diversi. Ad esempio, ho lavorato sul nostro server aziendale, ma ho anche lavorato un po 'con alcuni database sul mio server di hosting web condiviso. Questo potrebbe essere parte della ragione per cui ho preso parte alla confusione.Tabelle di SQL Server denominate con schema dbo

1) Da dove viene questo nome schema? Ho pensato che quando ho iniziato a fare scherzi con SQL Server diverse settimane fa non ho visto nessun nome di schema aggiunto ai nomi delle tabelle. Ho iniziato a vederli quando veniva importato un database o quando usavo l'Assistente Migrazione di MS Access. È possibile non utilizzare affatto gli schemi? Non si presentano in alcune circostanze?

2) Nome schema non "dbo"? In un progetto recente i miei schemi sono stati visualizzati come MyLongUserName.tablename anziché dbo.tablename. Sono confuso sul motivo per cui a volte un account utente appare come predefinito per lo schema dbo e altre volte è assegnato a uno schema con lo stesso nome dell'account utente. Questo ha qualcosa a che fare con l'accesso usando l'autenticazione NT contro l'autenticazione di SQL Server?

3) Utente chiamato dbo? Non ricordo di aver creato un utente di nome dbo nel database in cui sto lavorando, ma lo vedo nell'elenco degli utenti. L'account utente "dbo" deve esistere affinché lo schema "dbo" esista? I nomi utente e i nomi degli schemi sono sempre paralleli?

4) Per utilizzare schemi o non - Non è possibile utilizzarli? Usi schemi per piccoli progetti come un database di due o tre tabelle per un sito Web di base? Puoi evitare di utilizzare gli schemi interamente o semplicemente utilizzare solo lo schema "dbo" predefinito? Creeresti uno o più schemi aggiuntivi e assegnerai alcune autorizzazioni e account utente a questi/a anche su progetti molto piccoli?

Sto usando il libro SQL Server 2008 per sviluppatori di Murach e non ho trovato che sia troppo utile per chiarire la mia confusione. Sto leggendo frasi come: "Se non si specifica uno schema quando si creano gli oggetti, questi vengono memorizzati nello schema predefinito." Aspetta, come faccio a sapere qual è lo "schema di default"? Stiamo parlando dello schema predefinito dell'account utente o c'è "uno schema predefinito" per ogni database? È sempre "dbo"? Perché quando creo gli oggetti li assegna allo schema MyLongUserName anziché "dbo"?

risposta

12

Si potrebbe desiderare di iniziare con la lettura di questo: What good are SQL Server schemas?

da SQL Server 2005 in poi, gli schemi sono stati separati dagli utenti http://msdn.microsoft.com/en-us/library/ms190387.aspx.

Prima di questo, ogni utente possiede diverse tabelle, che saranno nel loro "spazio". Quel "spazio" è ora uno schema, che è un modo per raggruppare le tabelle.

SQL Server Gli oggetti hanno 4 parti per i loro nomi

  • server.database.schema.nomeoggetto

Ogni volta che si omette uno o più di essi, si denomina da destra

  • database.schema.objectname - implicita server corrente
  • schema.objectname - implicita database corrente
  • nomeoggetto - schema predefinito implicito. a ciascun utente può essere assegnato uno schema predefinito, ma per impostazione predefinita questo sarà "dbo"

"dbo" è uno schema speciale, è il proprietario del database. Esiste in tutti i database, ma è possibile aggiungere gli schemi (come le cartelle) per i database

Se si esegue la migrazione da installazioni precedenti di SQL Server 2000 DBS al 2005 o oltre, si può portare con sé lo schemas-nome-di-utenti, perché gli utenti "possiedono" le tabelle.

Problemi correlati