“ Initial Catalog” ในสตริงการเชื่อมต่อ SQL Server คืออะไร


92

ทุกสตริงการเชื่อมต่อ SQL Server ที่ฉันเคยเห็นมีลักษณะดังนี้:

Data Source=MyLocalSqlServerInstance;Initial Catalog=My Nifty Database;
    Integrated Security=SSPI;

ฉันต้องการการตั้งค่าแคตตาล็อกเริ่มต้นหรือไม่? (เห็นได้ชัดว่าไม่ใช่เนื่องจากแอปที่ฉันใช้งานดูเหมือนจะใช้งานได้หากไม่มี)

ถ้าอย่างนั้นมีไว้เพื่ออะไร?


31
อืมฉันเพิ่งค้นพบว่าแอปของฉันวางตารางที่ฉันสร้างไว้ทั้งหมดเป็นหลัก อ๊ะ. ฉันอาจเพิ่งได้เรียนรู้คำตอบสำหรับคำถามของฉัน
Ryan Lundy

คำตอบ:


54

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


10
ไม่เป็นความจริง การเข้าสู่ระบบอาจไม่มีสิทธิ์บนฐานข้อมูลเริ่มต้น ดังนั้นคุณต้องเปลี่ยนบริบทฐานข้อมูลเกี่ยวกับการเชื่อมต่อ
gbn

สิ่งนี้จำเป็นสำหรับ Entity Framework หากคุณระบุโดยใช้พารามิเตอร์ -ConnectionStringName ดังนั้นแนวทางปฏิบัติที่ดี แต่ก็จำเป็นในบางครั้งด้วย!
James G

คุณช่วยอธิบายคำตอบนี้ใหม่ได้ไหม ฉันยังไม่เข้าใจหลังจากอ่านสองครั้ง
thatWiseGuy

33

นี่คือฐานข้อมูลเริ่มต้นของแหล่งข้อมูลเมื่อคุณเชื่อมต่อ

แก้ไขเพื่อความชัดเจน :

หากคุณมีฐานข้อมูลหลายฐานข้อมูลในอินสแตนซ์ SQL Server และคุณไม่ต้องการใช้ฐานข้อมูลเริ่มต้นคุณต้องมีวิธีระบุว่าคุณจะใช้ฐานข้อมูลใด


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

เมื่อฉันพูดว่า "โดยค่าเริ่มต้น" ฉันหมายถึงเมื่อคุณไม่มีคุณสมบัติฐานข้อมูลในชื่อวัตถุของคุณ ไม่ว่าในกรณีใดฉันได้ชี้แจงคำตอบของฉันแล้ว
Andy West

ฉันชอบคำชี้แจงของ Andy จริงๆแล้วความคิดเห็นของเขาเป็นประโยชน์ ไม่ได้บ่งบอกว่าถ้าผมทำมีคุณสมบัติฐานข้อมูลทุกคนในชื่อวัตถุของฉันแล้วแค็ตตาล็อกเริ่มต้นไม่สำคัญ / ไม่เกี่ยวข้อง?
The Red Pea

12

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

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