รูปแบบควรจะเป็น:
<server>.<database>.<schema>.<table>
ตัวอย่างเช่น DatabaseServer1.db1.dbo.table1
อัปเดต : ฉันรู้ว่านี่เป็นคำถามเก่าและคำตอบที่ฉันมีนั้นถูกต้อง อย่างไรก็ตามฉันคิดว่าใครก็ตามที่สะดุดกับสิ่งนี้ควรรู้บางสิ่ง
กล่าวคือเมื่อสอบถามกับเซิร์ฟเวอร์ที่เชื่อมโยงในการเข้าร่วมสถานการณ์ทั้งหมดตารางจากเซิร์ฟเวอร์ที่เชื่อมโยงจะมีแนวโน้มที่จะดาวน์โหลดไปยังเซิร์ฟเวอร์แบบสอบถามจะดำเนินการจากเพื่อที่จะทำการดำเนินการเข้าร่วม ในกรณีของ OP ทั้งtable1
จากDB1
และtable1
จากจะถูกโอนในทั้งหมดของพวกเขาไปยังเซิร์ฟเวอร์รันแบบสอบถามสันนิษฐานว่าชื่อ DB2
DB3
หากคุณมีตารางขนาดใหญ่อาจส่งผลให้การดำเนินการใช้เวลานานในการดำเนินการ ท้ายที่สุดตอนนี้ถูก จำกัด ด้วยความเร็วการรับส่งข้อมูลเครือข่ายซึ่งเป็นคำสั่งของขนาดที่ช้ากว่าหน่วยความจำหรือแม้แต่ความเร็วในการถ่ายโอนดิสก์
ถ้าเป็นไปได้ให้ดำเนินการสืบค้นเดียวกับเซิร์ฟเวอร์ระยะไกลโดยไม่ต้องเข้าร่วมกับตารางภายในเพื่อดึงข้อมูลที่คุณต้องการลงในตารางชั่วคราว จากนั้นค้นหาสิ่งนั้น
หากเป็นไปไม่ได้คุณต้องดูสิ่งต่างๆที่ทำให้เซิร์ฟเวอร์ SQL ต้องโหลดตารางทั้งหมดในเครื่อง ตัวอย่างเช่นการใช้GETDATE()
หรือแม้กระทั่งการรวมบางอย่าง นักฆ่าคนอื่น ๆ รวมถึงการไม่ให้สิทธิ์ที่เหมาะสม
โปรดดูhttp://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/สำหรับข้อมูลเพิ่มเติม