SQL Server: อินสแตนซ์ชื่อและอินสแตนซ์เริ่มต้นคืออะไร


คำตอบ:


30

ตามที่ Microsoft เกี่ยวกับชื่อ vs ค่าเริ่มต้น

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

อินสแตนซ์เป็นอินสแตนซ์เริ่มต้นไม่มีชื่อหรือเป็นอินสแตนซ์ที่มีชื่อ เมื่อมีการติดตั้ง SQL Server 2005 ในอินสแตนซ์เริ่มต้นไม่จำเป็นต้องมีไคลเอ็นต์เพื่อระบุชื่อของอินสแตนซ์เพื่อทำการเชื่อมต่อ ลูกค้าจะต้องรู้ชื่อเซิร์ฟเวอร์เท่านั้น

อินสแตนซ์ที่ระบุชื่อถูกระบุโดยชื่อเครือข่ายของคอมพิวเตอร์รวมถึงชื่ออินสแตนซ์ที่คุณระบุระหว่างการติดตั้ง ไคลเอ็นต์ต้องระบุทั้งชื่อเซิร์ฟเวอร์และชื่ออินสแตนซ์เมื่อเชื่อมต่อ

โดยค่าเริ่มต้น SQL Server จะติดตั้งในอินสแตนซ์เริ่มต้นเว้นแต่คุณจะระบุชื่ออินสแตนซ์ อย่างไรก็ตาม SQL Server Express จะติดตั้งในอินสแตนซ์ที่มีชื่อเสมอเว้นแต่คุณจะบังคับให้ติดตั้งเริ่มต้นในระหว่างการติดตั้ง


17

นอกจากนี้คุณสามารถติดตั้งเริ่มต้นเพียงหนึ่งเดียว (อินสแตนซ์ที่ไม่มีชื่อ) แต่คุณสามารถติดตั้งอินสแตนซ์ที่มีชื่อจำนวนมากได้

ซอฟต์แวร์ของบุคคลที่สามจำนวนมากมักจะใช้อินสแตนซ์ที่มีชื่อเริ่มต้นแม้ว่าพวกเขาอาจไม่ได้กล่าวถึง เหตุผลนั้นชัดเจนจากคำตอบข้างต้นเวอร์ชันมาตรฐานจะติดตั้งอินสแตนซ์ที่ไม่มีชื่อตามค่าเริ่มต้นในขณะที่เวอร์ชัน Express จะติดตั้งอินสแตนซ์ที่มีชื่อตามค่าเริ่มต้น

สิ่งสำคัญคือต้องทราบเกี่ยวกับความแตกต่างจากมุมมองนี้เพราะถ้าคุณมีเซิร์ฟเวอร์ DB 2 หรือ 3 ตัวกำลังทำงานอยู่คุณอาจไม่เคยเชื่อมต่อกับเวอร์ชันที่ถูกต้อง เนื่องจากซอฟต์แวร์บุคคลที่สามกำลังค้นหาอินสแตนซ์เริ่มต้นในขณะที่คุณกำลังคิดว่าเป็นอินสแตนซ์ SQLEXPRESS ที่พยายามเชื่อมต่อ มันสามารถเพิ่มเวลาในการแก้ไขปัญหาของคุณได้อย่างมากถ้าคุณไม่รู้วิธีเชื่อมต่อกับอินสแตนซ์ที่ไม่มีชื่อและไม่มีชื่อ

ดังนั้นหากคุณต้องการเชื่อมต่อกับ Named หรือ Unnamed Version ให้ใช้แนวทางต่อไปนี้

MY-MACHINE-NAME\SQLEXPRESS  /* named version - correct */
MY-MACHINE-NAME             /* unnamed version (default instance) - correct */
MY-MACHINE-NAME\MSSQLSERVER /* unnamed version (default instance) - Wrong */

โปรดทราบว่าแม้ว่าอินสแตนซ์เริ่มต้นจะมีชื่อ แต่ก็ไม่สามารถอ้างอิงได้โดยใช้ชื่อ!


5

นอกจากคำอธิบาย Brett G ที่โพสต์ต่อไปนี้เป็นเหตุผลบางประการเกี่ยวกับสาเหตุที่ใช้:

  • คุณสามารถมีอินสแตนซ์ต่างกันโดยใช้ SQL เวอร์ชันต่าง ๆ (เช่น - ค่าเริ่มต้นโดยใช้ SQL 2008, อินสแตนซ์ที่มีชื่อโดยใช้ SQL 2005)
  • แยกความกังวลไม่ว่าจะเป็นอะไรกับแอพหรือความปลอดภัยของคุณหรืออะไรก็ตาม
  • สภาพแวดล้อมการพัฒนาที่แตกต่างกัน
  • สภาพแวดล้อมของแอปที่แตกต่างกัน (เช่น - พื้นบ้านกับบุคคลที่สาม)

เหตุผลทุกประเภทที่จะใช้พวกเขา ไม่ได้หมายความว่าเป็นความคิดที่ดีเสมอ: P


5

อีกข้อแตกต่างที่ใช้งานได้จริง: SQL2005 ขึ้นไปอนุญาตให้คุณติดตั้งอินสแตนซ์ 16 ระบบขึ้นไปต่อระบบ เนื่องจากสิทธิ์ใช้งานต่อซีพียูจริงต่อการติดตั้งเซิร์ฟเวอร์ SQL (และไม่ใช่ตามแต่ละอินสแตนซ์!) ซึ่งหมายความว่าคุณสามารถเรียกใช้อินสแตนซ์ของ SQL Server 2005 ได้สูงสุด 16 อินสแตนซ์โดยไม่ต้องจ่ายเงินมากกว่าที่คุณทำ

เนื่องจากสิทธิ์ใช้งาน CPU สามารถทำงานได้ที่ $ 15000 (!) ต่อซ็อกเก็ตนี่เป็นสิ่งที่ต้องมีสำหรับการติดตั้งขนาดใหญ่ด้วย, พูด, 16 คอร์และหน่วยความจำ 256GB


1

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


0

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

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

** แนวปฏิบัติที่ดีบอกว่าทำให้เซิร์ฟเวอร์การรายงานเป็นเครื่องที่แยกออกจากกัน แต่ฉันแค่ทำสิ่งนี้เป็นตัวอย่าง

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