Mengapa menggunakan master untuk membuat database?

12

Saya punya pertanyaan pendek, mengapa saya gunakan use master;untuk membuat database? Ini adalah contoh dari dokumentasi 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 ) ;
S Nell
sumber

Jawaban:

22

Sama sekali bukan persyaratan dalam kasus yang sangat spesifik ini, tetapi merupakan persyaratan dalam banyak skenario lainnya. Jika Anda membuat database bernama Sales, dan Anda memiliki database yang dipanggil Sales, Anda harus mengubah konteks database Anda sebelum Anda:

  • Pulihkan dengan ganti; atau,
  • Jatuhkan database saat ini dan kemudian:
    • Buat dari awal; atau,
    • Buat untuk melampirkan.

Ada banyak skenario lain di luar pembuatan basis data yang juga mensyaratkan (a) tidak berada dalam konteks database saat ini, atau (b) berada dalam konteks masterkhusus (atau setidaknya bukan database tertentu ), dan banyak dari hal-hal ini yang mungkin Anda lakukan selama atau sekitar membuat database:

  • Mengatur basis data ke keadaan yang berbeda, seperti single_user
  • Mencegah kesalahan ketika skrip memiliki USEperintah tetapi database pengguna itu mungkin offline atau tidak dapat diakses
  • Memberikan izin tingkat server seperti CREATE DATABASE
  • Memberikan keanggotaan peran tingkat server
  • Menandai modul sebagai objek sistem ( sp_MS_marksystemobject) atau sebagai prosedur memulai
  • Jenis tertentu dari sertifikat, audit server, dan operasi Grup Ketersediaan

Mungkin banyak hal lainnya. USE master;tidak selalu diperlukan, tetapi terkadang memang demikian, dan tidak ada salahnya untuk selalu menjalankan perintah tingkat server dari database itu.

Aaron Bertrand
sumber
17

Saya percaya itu bukan persyaratan bahwa Anda harus menggunakan masterdatabase untuk membuat database. Karena perintah create database harus dijalankan dalam konteks database, dokumentasi selalu menggunakan database default yang ada masterdan itu adalah database sistem yang akan selalu ada di sana, apa pun yang terjadi sehingga skrip tidak gagal!

Biju jose
sumber
4

Saya percaya bahwa kita, sangat lama sekali, harus menjadi master ketika menjalankan perintah CREATE DATABASE. Saya terlalu malas untuk mengaktifkan versi lama 20 tahun untuk memverifikasi. Jadi mungkin kombinasi dari itu dan itu "terasa alami" berada di master. Seperti jika Anda ingin membuat folder (bayangkan hanya ada satu tingkat folder), Anda mungkin merasa "lebih baik" untuk mengatakan CD \ pertama (membandingkan root di sini dengan database master).

Tibor Karaszi
sumber