Perché usare master per creare un database?


12

Ho una domanda breve, perché posso usare use master;per creare un database? Ecco l' esempio della documentazione Microsoft

USE master ;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
    FILENAME = 'C:\Program Files\...\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,  
    FILENAME = 'C:\Program Files\...\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;

Risposte:


22

Non è assolutamente un requisito in questo caso molto specifico, ma è un requisito in molti altri scenari. Se stai creando un database chiamato Salese hai già un database chiamato Sales, dovrai modificare il contesto del database prima di:

  • Ripristina con Sostituisci; o,
  • Rilascia il database corrente e quindi:
    • Crea da zero; o,
    • Crea per allegare.

Esistono molti altri scenari al di fuori della creazione del database che richiedono anche che (a) non si trovi nel contesto del database corrente o (b) si trovi nel contesto di uno masterspecifico (o almeno non un database specifico ) e molti di queste cose che potresti fare durante o attorno alla creazione di database:

  • Impostare un database su uno stato diverso, ad esempio single_user
  • Prevenire errori quando uno script ha un USEcomando ma quel database utente potrebbe essere offline o altrimenti inaccessibile
  • Concedere autorizzazioni a livello di server come CREATE DATABASE
  • Concessione dell'appartenenza al ruolo a livello di server
  • Contrassegnare un modulo come oggetto di sistema ( sp_MS_marksystemobject) o come procedura di avvio
  • Alcuni tipi di operazioni relative a certificati, audit del server e gruppi di disponibilità

Probabilmente una serie di altre cose. USE master;non è sempre necessario, ma a volte lo è, e non fa male eseguire sempre comandi a livello di server da quel database.


17

Credo che non sia necessario utilizzare il masterdatabase per creare un database. Poiché il comando create database deve essere eseguito in un contesto di database, la documentazione utilizza sempre un database predefinito che è mastered è un database di sistema che sarà sempre presente, indipendentemente dallo scopo, in modo che lo script non fallisca!


4

Credo che, molto tempo fa, dovevamo essere padrone nell'esecuzione del comando CREATE DATABASE. Sono troppo pigro per accendere una versione di 20 anni per verificarlo. Quindi probabilmente una combinazione di questo e che "sembra naturale" essere padrone. Come se dovessi creare una cartella (immagina che ci sia un solo livello di cartelle), probabilmente ti sentirai "meglio" per dire CD \ first (confrontando la radice qui con il database master).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.