Formatnya mungkin:
<server>.<database>.<schema>.<table>
Misalnya: DatabaseServer1.db1.dbo.table1
Pembaruan : Saya tahu ini adalah pertanyaan lama dan jawaban yang saya miliki benar; Namun, saya pikir orang lain yang tersandung pada hal ini harus mengetahui beberapa hal.
Yaitu, saat melakukan kueri terhadap server tertaut dalam situasi gabungan, SELURUH tabel dari server tertaut kemungkinan akan diunduh ke server yang menjalankan kueri untuk melakukan operasi gabungan. Dalam kasus OP, baik table1
dari DB1
dan table1
dari DB2
akan ditransfer secara keseluruhan ke server yang menjalankan kueri, mungkin bernama DB3
.
Jika Anda memiliki tabel yang besar, ini dapat mengakibatkan operasi yang membutuhkan waktu lama untuk dijalankan. Lagipula sekarang ini dibatasi oleh kecepatan lalu lintas jaringan yang besarnya lebih lambat daripada kecepatan transfer memori atau bahkan disk.
Jika memungkinkan, lakukan satu kueri terhadap server jarak jauh, tanpa bergabung ke tabel lokal, untuk menarik data yang Anda perlukan ke tabel temp. Kemudian tanya dari itu.
Jika itu tidak memungkinkan maka Anda perlu melihat berbagai hal yang akan menyebabkan SQL server harus memuat seluruh tabel secara lokal. Misalnya menggunakan GETDATE()
atau bahkan gabungan tertentu. Pembunuh kinerja lainnya termasuk tidak memberikan hak yang sesuai.
Lihat http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ untuk beberapa info lebih lanjut.