Tại sao sử dụng master để tạo cơ sở dữ liệu?


12

Tôi có một câu hỏi ngắn, tại sao tôi sử dụng use master;để tạo cơ sở dữ liệu? Dưới đây là ví dụ từ tài liệu của 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 ) ;

Câu trả lời:


22

Nó hoàn toàn không phải là một yêu cầu trong trường hợp rất cụ thể này, nhưng nó là một yêu cầu trong nhiều tình huống khác. Nếu bạn đang tạo một cơ sở dữ liệu được gọi Salesvà bạn có một cơ sở dữ liệu được gọi Sales, bạn sẽ cần thay đổi bối cảnh cơ sở dữ liệu trước khi:

  • Khôi phục với thay thế; hoặc là,
  • Bỏ cơ sở dữ liệu hiện tại và sau đó:
    • Tạo từ đầu; hoặc là,
    • Tạo để đính kèm.

Có rất nhiều kịch bản khác ngoài việc tạo cơ sở dữ liệu cũng yêu cầu (a) không nằm trong bối cảnh của cơ sở dữ liệu hiện tại hoặc (b) nằm trong bối cảnh mastercụ thể (hoặc ít nhất không phải là cơ sở dữ liệu cụ thể ) và nhiều những điều bạn có thể làm trong hoặc xung quanh việc tạo cơ sở dữ liệu:

  • Đặt cơ sở dữ liệu sang trạng thái khác, như single_user
  • Ngăn chặn lỗi khi tập lệnh có USElệnh nhưng cơ sở dữ liệu người dùng đó có thể ngoại tuyến hoặc không thể truy cập được
  • Cấp quyền cấp máy chủ như CREATE DATABASE
  • Cấp quyền thành viên cấp máy chủ
  • Đánh dấu một mô-đun như một đối tượng hệ thống ( sp_MS_marksystemobject) hoặc như một thủ tục khởi động
  • Một số loại chứng chỉ, kiểm toán máy chủ và các hoạt động của Nhóm sẵn có

Có lẽ là một loạt các thứ khác. USE master;không phải lúc nào cũng cần thiết, nhưng đôi khi, và điều đó không gây hại gì khi luôn thực thi các lệnh cấp máy chủ từ cơ sở dữ liệu đó.


17

Tôi tin rằng đó không phải là một yêu cầu mà bạn nên sử dụng mastercơ sở dữ liệu để tạo cơ sở dữ liệu. Vì lệnh tạo cơ sở dữ liệu nên được chạy trong ngữ cảnh cơ sở dữ liệu, tài liệu luôn sử dụng cơ sở dữ liệu mặc định mastervà đó là cơ sở dữ liệu hệ thống sẽ luôn ở đó cho dù kịch bản không thất bại!


4

Tôi tin rằng chúng ta, từ rất lâu trước đây, đã phải thành thạo khi thực hiện lệnh CREATE DATABASE. Tôi quá lười biếng để kích hoạt một số phiên bản 20 năm tuổi để xác minh. Vì vậy, có lẽ một sự kết hợp của điều đó và nó "cảm thấy tự nhiên" để được làm chủ. Giống như nếu bạn định tạo một thư mục (hãy tưởng tượng chỉ có một cấp thư mục), bạn có thể cảm thấy "tốt hơn" khi nói CD \ trước tiên (so sánh root ở đây với cơ sở dữ liệu chủ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.