Bagaimana saya bisa memilih data dalam kueri yang sama dari dua database berbeda yang ada di dua server berbeda di SQL Server?
sql
sql-server
Eric
sumber
sumber
Jawaban:
Apa yang Anda cari adalah Server Tertaut. Anda bisa mendapatkannya di SSMS dari lokasi berikut di bagan Object Explorer:
Server Objects-->Linked Servers
atau Anda dapat menggunakan sp_addlinkedserver .
Anda hanya perlu mengatur satu. Setelah memilikinya, Anda dapat memanggil tabel di server lain seperti:
Perhatikan bahwa pemiliknya tidak selalu
dbo
, jadi pastikan untuk menggantinya dengan skema apa pun yang Anda gunakan.sumber
[OtherServerName].[OtherDB]..[OtherTable]
Namun yang terbaik adalah memasukkannya jika diketahui.Anda dapat melakukannya menggunakan Linked Server.
Server yang tertaut secara tipikal dikonfigurasikan untuk mengaktifkan Database Engine untuk mengeksekusi pernyataan Transact-SQL yang menyertakan tabel dalam contoh lain dari SQL Server, atau produk database lain seperti Oracle. Banyak jenis sumber data OLE DB dapat dikonfigurasi sebagai server yang ditautkan, termasuk Microsoft Access dan Excel.
Server tertaut menawarkan keuntungan berikut:
Baca lebih lanjut tentang Server Tertaut .
Ikuti langkah-langkah ini untuk membuat Server Tertaut:
Objek Server -> Server Tertaut -> Server Tertaut Baru
Berikan Nama Server Jarak Jauh.
Pilih Jenis Server Jarak Jauh (SQL Server atau Lainnya).
Pilih Keamanan -> Dibuat menggunakan konteks keamanan ini dan berikan login dan kata sandi server jarak jauh.
Klik OK dan Anda selesai !!
Berikut ini adalah tutorial sederhana untuk membuat server tertaut.
ATAU
Anda dapat menambahkan server tertaut menggunakan kueri.
Sintaksis:
Baca lebih lanjut tentang sp_addlinkedserver .
Anda harus membuat server tertaut hanya sekali . Setelah membuat server tertaut, kami dapat menanyakannya sebagai berikut:
sumber
Anda juga dapat melihat menggunakan Server Tertaut. Server yang ditautkan dapat berupa jenis sumber data lain juga seperti platform DB2. Ini adalah salah satu metode untuk mencoba mengakses DB2 dari SQL Server TSQL atau panggilan Sproc ...
sumber
Could not find server '88.208.229.164' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Permintaan di 2 basis data yang berbeda adalah kueri yang didistribusikan. Berikut adalah daftar beberapa teknik ditambah pro dan kontra:
sumber
coba ini:
sumber
Ini semua adalah jawaban yang baik, tetapi yang ini hilang dan memiliki kegunaan yang kuat. Mungkin itu tidak sesuai dengan yang diinginkan OP, tetapi pertanyaannya tidak jelas dan saya merasa orang lain mungkin menemukan jalan mereka di sini. Pada dasarnya Anda dapat menggunakan 1 jendela untuk secara bersamaan menjalankan kueri terhadap beberapa server, berikut caranya:
Dalam SSMS, buka Server Terdaftar dan buat Grup Server Baru di bawah Grup Server Lokal .
Di bawah grup ini buat Registrasi Server Baru untuk setiap server yang ingin Anda query. Jika nama-nama DB berbeda pastikan untuk menetapkan default untuk masing-masing di properti.
Sekarang kembali ke Grup yang Anda buat di langkah pertama, klik kanan dan pilih Permintaan Baru. Jendela permintaan baru akan terbuka dan permintaan apa pun yang Anda jalankan akan dijalankan pada setiap server dalam grup. Hasilnya disajikan dalam satu set data tunggal dengan nama kolom tambahan yang menunjukkan dari server mana catatan itu berasal. Jika Anda menggunakan bilah status, Anda akan perhatikan bahwa nama server diganti dengan banyak .
sumber
Saya memiliki masalah yang sama untuk menghubungkan SQL_server 2008 ke SQL_server 2016 yang di-host di server jauh. Jawaban lain tidak langsung bagi saya. Saya menulis solusi tweak saya di sini karena saya pikir ini mungkin berguna untuk orang lain.
Jawaban yang diperluas untuk koneksi IP db jarak jauh:
Langkah 1: tautan server
... di mana
SRV_NAME
nama ditemukan. Kami akan menggunakannya untuk merujuk ke server jarak jauh dari pertanyaan kami.aaa.bbb.ccc.ddd
adalah alamat ip dari server jauh yang menghosting SQLserver DB Anda.Langkah 2: Jalankan pertanyaan Anda Misalnya:
... dan itu saja!
Detail sintaks: sp_addlinkedserver dan sp_addlinkedsrvlogin
sumber
Membuat definisi Linked Server di satu server dengan yang lain (Anda perlu SA untuk melakukan ini), lalu rujuk saja dengan penamaan 4-bagian (lihat BOL).
sumber
Server 2008:
Ketika di SSMS terhubung ke server1.DB1 dan coba:
seperti yang dicatat orang lain, jika tidak berhasil itu karena server tidak terhubung.
Saya mendapatkan kesalahan:
Untuk menambah server:
referensi: Untuk menambah server menggunakan sp_addlinkedserver Tautan: [1]: Untuk menambahkan server menggunakan sp_addlinkedserver
Untuk melihat apa yang ada di sys.servers Anda cukup kueri itu:
sumber
sumber
Seperti @ Super9 diceritakan tentang OPENDATASOURCE menggunakan SQL Server Authentication dengan penyedia data SQLOLEDB . Saya hanya memposting di sini potongan kode untuk satu tabel dalam database saat ini tempat kode berjalan dan yang lain di server lain '192.166.41.123'
sumber
jadi harus seperti ini -
sumber
Saya tahu ini adalah pertanyaan lama tetapi saya menggunakan sinonim. Seharusnya kueri dijalankan di dalam server database A, dan mencari tabel di server database B yang tidak ada di server A. Tambahkan kemudian sinonim pada database yang memanggil tabel Anda dari server B. Permintaan Anda tidak harus sertakan skema apa pun, atau nama database yang berbeda, cukup panggil nama tabel seperti biasa dan itu akan berfungsi.
Tidak perlu menautkan server karena sinonim per katakan adalah semacam tautan.
sumber
Objek Server ---> server tertaut ---> server tertaut baru
Di server yang terhubung tulis nama server atau alamat IP untuk server lain dan pilih SQL Server Di Keamanan pilih (dibuat menggunakan konteks keamanan ini) Tulis login dan kata sandi untuk server lain
Sekarang terhubung lalu gunakan
sumber
Solusi yang disederhanakan untuk menambahkan server yang ditautkan
Server pertama
Login Kedua
Jalankan permintaan dari yang ditautkan ke db lokal
sumber