Warum mit master eine Datenbank erstellen?


12

Ich habe eine kurze Frage, warum ich use master;eine Datenbank erstelle. Hier ist das Beispiel aus der Microsoft-Dokumentation

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 ) ;

Antworten:


22

In diesem speziellen Fall ist dies absolut keine Anforderung, in vielen anderen Szenarien jedoch eine Anforderung. Wenn Sie eine Datenbank mit dem Namen Saleserstellen und bereits eine Datenbank mit dem Namen haben Sales, müssen Sie den Datenbankkontext ändern, bevor Sie:

  • Wiederherstellen mit Ersetzen; oder,
  • Löschen Sie die aktuelle Datenbank und dann:
    • Von Grund auf neu erstellen; oder,
    • Zum Anhängen erstellen.

Es gibt viele andere Szenarien außerhalb der Datenbankerstellung, bei denen entweder (a) nicht im Kontext der aktuellen Datenbank oder (b) im Kontext einer masterbestimmten (oder zumindest keiner bestimmten Datenbank) und viele von ihnen vorhanden sein müssen Diese Dinge, die Sie möglicherweise während oder um das Erstellen von Datenbanken tun:

  • Festlegen eines anderen Status für eine Datenbank, z single_user
  • Verhindern von Fehlern, wenn ein Skript einen USEBefehl enthält, die Benutzerdatenbank jedoch offline ist oder auf andere Weise nicht zugegriffen werden kann
  • Erteilen von Berechtigungen auf Serverebene wie CREATE DATABASE
  • Gewähren der Rollenmitgliedschaft auf Serverebene
  • Markieren eines Moduls als Systemobjekt ( sp_MS_marksystemobject) oder als Startvorgang
  • Bestimmte Arten von Vorgängen für Zertifikate, Serverprüfungen und Verfügbarkeitsgruppen

Wahrscheinlich eine Menge anderer Dinge. USE master;ist nicht immer notwendig, aber manchmal ist es, und es nicht schaden Server-Level - Befehle aus dieser Datenbank immer ausführen zu.


17

Ich glaube, es ist nicht erforderlich, dass Sie die masterDatenbank verwenden, um eine Datenbank zu erstellen. Da der Befehl create database in einem Datenbankkontext ausgeführt werden sollte, wird in der Dokumentation immer eine Standarddatenbank verwendet. Dabei handelt masteres sich um eine Systemdatenbank, die immer verfügbar ist, unabhängig davon, warum das Skript nicht fehlschlägt.


4

Ich glaube , dass wir eine sehr , sehr lange her, hatte im Master sein , wenn der Befehl CREATE DATABASE ausgeführt wird . Ich bin zu faul, um eine 20 Jahre alte Version zu starten, um das zu überprüfen. Also wahrscheinlich eine Kombination davon und dass es sich "natürlich anfühlt", Meister zu sein. Wenn Sie beispielsweise einen Ordner erstellen (stellen Sie sich vor, es gibt nur eine Ordnerebene), fühlen Sie sich wahrscheinlich "besser", wenn Sie zuerst "CD \" sagen (vergleichen Sie das Stammverzeichnis hier mit der master-Datenbank).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.