“ เซิร์ฟเวอร์” เทียบกับ“ แหล่งข้อมูล” ในสตริงการเชื่อมต่อ


113

ฉันเพิ่งเริ่มใช้ SqlServer ตอนนี้ฉันได้SqlLocalDbติดตั้งเพื่อทำงานในเครื่องแล้ว ดี แต่ฉันเห็นสตริงการเชื่อมต่อสองแบบโดยทั่วไปและใช้ได้ทั้งสองอย่าง:

Data Source=(localdb)\v11.0;Integrated Security=true;

และ

Server=(localdb)\v11.0;Integrated Security=true;

อะไรคือความแตกต่างที่แน่นอนระหว่างทั้งสอง?


1
คำหลักที่เกี่ยวข้องสำหรับเซิร์ฟเวอร์ db ชื่อผู้ใช้รหัสผ่านแสดงอยู่ในคำตอบนี้: stackoverflow.com/a/15529085/661933
nawfal

คำตอบ:


114

สำหรับรายการเต็มรูปแบบของคำหลักทั้งหมดของสตริงการเชื่อมต่อรวมทั้งผู้ที่มีความหมายเหมือนกันทั้งหมดโปรดดูที่SqlConnection.ConnectionStringเอกสาร :

สิ่งเหล่านี้เทียบเท่าทั้งหมด:

  • แหล่งข้อมูล
  • เซิร์ฟเวอร์
  • ที่อยู่
  • ที่อยู่
  • ที่อยู่เครือข่าย

2
ถามคำถามทำไม Microsoft ถึงสร้างสิ่งที่เทียบเท่า ... ? (ยกเว้นจะทำให้เราสับสน :-))
bytedev

1
@bytedev - การบรรจบกันทางประวัติศาสตร์ฉันเชื่อ ชื่อเหล่านี้ส่วนใหญ่เริ่มต้นจากการใช้ใน "มาตรฐาน" การเชื่อมต่อ DB รุ่นเก่าอื่น ๆ เมื่อสร้าง ADO.Net ตราบใดที่ไม่มีการใช้งานที่ขัดแย้งกันคุณอาจอนุญาตให้ใช้งานทั่วไปได้มากเท่าที่มีอยู่ในมาตรฐานรุ่นเก่าเพื่อลดความยุ่งยากในการย้ายรหัส
Damien_The_Unbeliever

@Damien_The_Unbeliever จุดบรรจบคืออะไร? ฉันเล่นมัน แต่มีของ Atlassian มากมาย (และที่ฉันรู้จัก) แต่คำว่าความหมายคืออะไร? ฉันพยายาม "แปล: การบรรจบกัน" แต่พบว่า ...
Konrad Viltersten

อาจเป็นประโยชน์ที่จะทราบว่าหากด้วยเหตุผลบางประการสตริงการเชื่อมต่อของคุณมีคำหลักเหล่านี้มากกว่าหนึ่งคำ (และค่าที่อยู่ขัดแย้งกัน) รายการสุดท้ายจะถูกใช้ ค่าก่อนหน้านี้จะถูกละเว้น ตัวอย่างเช่นเมื่อกำหนดสตริงการเชื่อมต่อServer=192.168.2.2;Data Source=localhostไคลเอ็นต์จะให้เกียรติlocalhostค่าและไม่สนใจ192...ค่า
Brian Lacy

17

... ไม่มีความแตกต่างระหว่าง Server และ Data Source เนื่องจากเป็นสิ่งเดียวกันสำหรับ SQL Server: ชื่อเต็มของอินสแตนซ์ SQL Server ที่มีไวยากรณ์ "MyComputerName \ MyShortInstanceName" ซึ่งอาจรวมถึงพอร์ตที่อินสแตนซ์ SQL Server ใช้เพื่อ สื่อสาร.

อ้างอิง: http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/7e3cd9b2-4eed-4103-a07a-5ca2cd33bd21


11

มีความหมายเหมือนกัน - คุณสามารถใช้อย่างใดอย่างหนึ่ง

นั่นคือ - เท่าที่กรอบมีความเกี่ยวข้องพวกเขาก็เหมือนกัน


ฉันใช้ googlearching ด้วยเหตุผลของช่วงของคำหลักที่เทียบเท่ากันในสตริงการเชื่อมต่อ จนถึงตอนนี้ฉันยังไม่พบคำอธิบายที่ดี ฉันคิดว่าเป็นเพราะเหตุผลทางประวัติศาสตร์และผู้ใช้จาก "โลก" ที่แตกต่างกันมารวมกัน มีเหตุผลอื่นอีกหรือไม่?
DonkeyBanana

0

การตั้งค่าที่ฉันชอบคือการตั้งค่าที่ไม่มีช่องว่างใด ๆ ในรูปแบบที่ง่ายที่สุดเราต้องระบุค่าสี่ค่า ได้แก่ URL คอนเทนเนอร์ผู้ใช้และข้อมูลรับรอง

  • เซิร์ฟเวอร์
  • ฐานข้อมูล
  • เอ่อ
  • pwd

สตริงการเชื่อมต่อจะเป็นแบบนี้

เซิร์ฟเวอร์ = stuffy.databases.net; ฐานข้อมูล = stuffy; uid = konrad; pwd = Abc123 (!);


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

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