マスターを使用してデータベースを作成する理由


12

短い質問がありますが、なぜuse master;データベースの作成に使用するのですか?ここでの例は、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 ) ;

回答:


22

この非常に特殊なケースでは絶対に要件ではありませんが、他の多くのシナリオでは要件です。と呼ばれるデータベースを作成しSalesていて、と呼ばれるデータベースがあるSales場合は、データベースコンテキストを変更する必要があります。

  • 置換して復元します。または、
  • 現在のデータベースを削除してから:
    • 最初から作成します。または、
    • 接続用に作成します。

データベース作成以外にも、(a)現在のデータベースのコンテキストにないこと、または(b)master具体的に(または少なくとも特定のデータベースにない)コンテキスト、および多くのデータベースの作成中または作成中に行う可能性のあるこれらのこと:

  • データベースを次のような異なる状態に設定する single_user
  • スクリプトにはUSEコマンドはあるが、そのユーザーデータベースがオフラインであるかアクセスできない場合のエラーの防止
  • 次のようなサーバーレベルの権限を付与する CREATE DATABASE
  • サーバーレベルのロールメンバーシップの付与
  • モジュールをシステムオブジェクト(sp_MS_marksystemobject)またはスタートアッププロシージャとしてマークする
  • 特定の種類の証明書、サーバー監査、および可用性グループの操作

おそらく他にもたくさんあります。USE master;常に必要というわけではありませんが、時には必要であり、そのデータベースからサーバーレベルのコマンドを常に実行するのにはありません。


17

masterデータベースを使用してデータベースを作成する必要はないと思います。データベースの作成コマンドはデータベースコンテキストで実行する必要があるため、ドキュメントでは常にデフォルトのデータベースを使用します。これはmaster、システムデータベースであり、スクリプトが失敗しないように常に存在します。


4

CREATE DATABASEコマンドを実行するとき、非常に長い時間前にマスターである必要があったと思います。私は検証するために20年前のバージョンを起動するのが面倒です。おそらくそれと、マスターになるのは「自然に感じる」ことの組み合わせでしょう。フォルダーを作成する場合(フォルダーのレベルが1つしかないことを想像してください)、最初にCDを言う方が「良い」と感じます(ここでルートをmasterデータベースと比較してください)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.