เหตุใดจึงต้องใช้ master เพื่อสร้างฐานข้อมูล


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คุณจะต้องเปลี่ยนบริบทฐานข้อมูลของคุณก่อน:

  • คืนค่าด้วยการแทนที่ หรือ,
  • ปล่อยฐานข้อมูลปัจจุบันแล้ว:
    • สร้างตั้งแต่เริ่มต้น หรือ,
    • สร้างเพื่อแนบ

มีสถานการณ์อื่น ๆ อีกมากมายนอกเหนือจากการสร้างฐานข้อมูลที่ต้องการ (ก) ไม่ได้อยู่ในบริบทของฐานข้อมูลปัจจุบันหรือ (ข) อยู่ในบริบทของmasterเฉพาะ (หรืออย่างน้อยไม่ใช่ฐานข้อมูลเฉพาะ ) และอีกมากมาย สิ่งเหล่านี้คุณอาจทำในระหว่างหรือรอบ ๆ การสร้างฐานข้อมูล:

  • การตั้งค่าฐานข้อมูลเป็นสถานะอื่นเช่น single_user
  • การป้องกันข้อผิดพลาดเมื่อสคริปต์มีUSEคำสั่ง แต่ฐานข้อมูลผู้ใช้นั้นอาจออฟไลน์หรือไม่สามารถเข้าถึงได้
  • ให้สิทธิ์ระดับเซิร์ฟเวอร์เช่น CREATE DATABASE
  • การให้สิทธิ์การเป็นสมาชิกบทบาทระดับเซิร์ฟเวอร์
  • การทำเครื่องหมายโมดูลเป็นวัตถุระบบ ( sp_MS_marksystemobject) หรือเป็นโพรซีเดอร์เริ่มต้น
  • ใบรับรองบางประเภทการตรวจสอบเซิร์ฟเวอร์และการทำงานของกลุ่มความพร้อมใช้งาน

น่าจะเป็นสิ่งที่ฆ่าคนอื่น ๆ USE master;ไม่จำเป็นเสมอไป แต่บางครั้งก็เป็นไปได้และไม่เจ็บที่จะเรียกใช้คำสั่งระดับเซิร์ฟเวอร์จากฐานข้อมูลนั้นเสมอ


17

ฉันเชื่อว่าไม่ใช่ข้อกำหนดที่คุณควรใช้masterฐานข้อมูลเพื่อสร้างฐานข้อมูล เนื่องจากคำสั่งสร้างฐานข้อมูลควรทำงานในบริบทฐานข้อมูลเอกสารประกอบจะใช้ฐานข้อมูลเริ่มต้นเสมอmasterและเป็นฐานข้อมูลระบบซึ่งจะมีอยู่เสมอไม่ว่าสคริปต์จะไม่ล้มเหลว!


4

ผมเชื่อว่าเราเป็นเวลานานมากนานมากแล้วมีที่จะอยู่ในหลักเมื่อรันคำสั่งสร้างฐานข้อมูล ฉันขี้เกียจเกินไปที่จะเปิดไฟรุ่นเก่ากว่า 20 ปีเพื่อตรวจสอบ ดังนั้นการรวมกันของสิ่งนั้นและมัน "รู้สึกเป็นธรรมชาติ" ที่จะอยู่ในระดับปริญญาโท เช่นถ้าคุณต้องการสร้างโฟลเดอร์ (ลองนึกภาพว่ามีโฟลเดอร์เพียงระดับเดียวเท่านั้น) คุณอาจรู้สึกว่า "ดีกว่า" เพื่อพูด CD \ first (เปรียบเทียบรูทที่นี่กับฐานข้อมูลหลัก)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.