Ada dua tabel dalam dua database berbeda di server yang berbeda, saya perlu menggabungkannya untuk membuat beberapa pertanyaan. Opsi apa yang saya miliki? Apa yang harus saya lakukan?
102
Ada dua tabel dalam dua database berbeda di server yang berbeda, saya perlu menggabungkannya untuk membuat beberapa pertanyaan. Opsi apa yang saya miliki? Apa yang harus saya lakukan?
Jawaban:
Anda harus menggunakan
sp_addlinkedserver
untuk membuat tautan server. Lihat dokumentasi referensi untuk penggunaan. Setelah tautan server dibuat, Anda akan membuat kueri seperti biasa, hanya memberi awalan nama database dengan server lain. YAITU:Setelah tautan dibuat, Anda juga dapat menggunakan
OPENQUERY
pernyataan SQL di server jarak jauh dan hanya mentransfer datanya kembali kepada Anda. Ini bisa sedikit lebih cepat, dan ini akan membiarkan server jarak jauh mengoptimalkan kueri Anda. Jika Anda menyimpan data dalam cache dalam tabel sementara (atau dalam memori) padaDB1
contoh di atas, maka Anda akan dapat menanyakannya seperti bergabung dengan tabel standar. Sebagai contoh:Lihat dokumentasi OPENQUERY untuk melihat beberapa contoh lainnya. Contoh di atas cukup dibuat-buat. Saya pasti akan menggunakan metode pertama dalam contoh khusus ini, tetapi penggunaan opsi kedua
OPENQUERY
dapat menghemat waktu dan kinerja jika Anda menggunakan kueri untuk menyaring beberapa data.sumber
Coba ini:
sumber
Jika server tertaut tidak diizinkan oleh dba Anda, Anda dapat menggunakan OPENROWSET. Books Online akan menyediakan sintaks yang Anda butuhkan.
sumber
Dari perspektif perusahaan praktis, praktik terbaik adalah membuat salinan cermin dari tabel database di database Anda, dan kemudian cukup tugas / proc memperbaruinya dengan delta setiap jam.
sumber
Gabungan dua tabel paling baik dilakukan oleh DBMS, jadi harus dilakukan seperti itu. Anda dapat mencerminkan tabel atau subset yang lebih kecil di salah satu database dan kemudian menggabungkannya. Orang mungkin tergoda untuk melakukan ini di server ETL seperti informatica tetapi saya kira itu tidak disarankan jika tabelnya besar.
sumber
Jika opsi tautan database tidak tersedia, rute lain yang bisa Anda ambil adalah menautkan tabel melalui ODBC ke sesuatu seperti MS Access atau laporan Crystal dan melakukan penggabungan di sana.
sumber
Mungkin nama database yang di-hardcode bukanlah pendekatan terbaik yang selalu ada dalam kueri SQL. Jadi, menambahkan sinonim akan menjadi pendekatan yang lebih baik. Tidak selalu terjadi bahwa database memiliki nama yang sama di beberapa lingkungan pementasan. Mereka mungkin terdiri dari postfix seperti PROD, UAT, SIT, QA dan sebagainya. Jadi berhati-hatilah dengan kueri kode keras dan buat mereka lebih dinamis.
Pendekatan # 1: Gunakan sinonim untuk menghubungkan tabel antar database di server yang sama.
Pendekatan # 2: Kumpulkan data secara terpisah dari setiap database dan gabungkan ke dalam kode Anda. String koneksi database Anda bisa menjadi bagian dari konfigurasi server aplikasi Anda melalui database atau file konfigurasi.
sumber
Saya mencoba kode ini di bawah dan berfungsi dengan baik
sumber
Anda bisa mencoba yang berikut ini:
sumber
untuk ini cukup ikuti kueri di bawah ini
Di mana saya menulis nama databasename, Anda harus menentukan nama database. Jika Anda berada di database yang sama maka Anda tidak perlu menentukan nama database tetapi jika Anda berada di database lain Anda harus menyebutkan nama database sebagai jalur atau akan muncul kesalahan. Semoga saya membuat pekerjaan Anda mudah
sumber
Ketika saya mengalami kesulitan untuk bergabung dengan dua tabel tersebut, saya berhasil melakukan apa yang saya inginkan dengan membuka kedua database jarak jauh pada saat yang bersamaan. MySQL 5.6 (php 7.1) dan MySQL 5.1 lainnya (php 5.6)
Jika Anda mendapatkan dua OK itu di layar, maka kedua database tersebut terbuka dan siap. Kemudian Anda dapat melanjutkan untuk melakukan kueri Anda.
Saya mencoba melakukan beberapa penggabungan tetapi karena saya membuka kedua DB tersebut, maka saya dapat bolak-balik melakukan kueri hanya dengan mengubah koneksi
$mysqli1
atau$mysqli2
Ini berhasil untuk saya, saya harap ini membantu ... Cheers
sumber