Adakah saran bagaimana cara menggabungkan tabel dari server yang berbeda dalam prosedur tersimpan?
Tanpa rincian lebih lanjut, sulit untuk memberikan contoh langsung, tetapi inilah ide dasarnya:
Pertama, di luar prosedur tersimpan, server host (server tempat prosedur tersimpan akan berada) harus mengetahui tentang server kedua, termasuk (mungkin) informasi login.
Pada server utama Anda, jalankan prosedur tersimpan sp_addlinkedserver. Ini hanya harus dilakukan sekali:
exec sp_addlinkedserver @server=’(your second server)‘;
Jika Anda perlu memberikan informasi login ke server kedua ini (misalnya, proses tidak dapat'tidak masuk dengan kredensial yang sama dengan yang digunakan dalam koneksi basis data awal), lakukan dengan sp_addlinkedsrvlogin stored proc:
exec sp_addlinkedsrvlogin @rmtsrvname=’(your second server)‘,@useself=false, @rmtuser=’yourusername‘, @rmtpassword=’yourpassword‘;
Kemudian, dalam prosedur tersimpan Anda, Anda dapat menentukan tabel pada server kedua:
SELECT table1.*
FROM table1
INNER JOIN [secondserver].[database].[schema].[table] AS table2 ON
table1.joinfield = table2.joinfield
1. Periksa untuk melihat apakah Anda memiliki server yang terhubung menggunakan exec sp_helpserver
2. Jika server Anda tidak dikembalikan maka itu bukan Terhubung
yang berarti Anda perlu menambahkannya. Jika tidak, lanjutkan ke langkah 3.
Untuk Sql Server 2008 R2, buka Server Object > Linked Servers > Add new Linked Server
Atau
exec sp_addlinkedserver @server='ServerName';
3. Hubungkan ke server Sekunder seperti ini...
exec sp_addlinkedsrvlogin
@rmtsrvname='ServerName'
, @useself=false
, @rmtuser='user'
, @rmtpassword='Password';
4. Sekarang Anda dapat Menggabungkan tabel untuk dua server yang berbeda.
SELECT
SRV1.*
FROM
DB1.database_name.dbo.table_name SRV1
INNER JOIN DB2.database_name.dbo.table_name SRV2
ON SRV1.columnId = SRV2.columnId
GO
Anda harus menautkan dua server terlebih dahulu sebelum menggabungkan tabel. Setelah keduanya dihubungkan, Anda bisa menggunakan query di bawah ini dan mengganti server, database & nama tabel.
Ingatlah untuk mengeksekusi sql di bawah ini di DB2:
EXEC sp_addlinkedserver DB1
GO
-- below statement connects sa account of DB2 to DB1
EXEC sp_addlinkedsrvlogin @rmtsrvname = 'DB1', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'DB1 sa pwd'
GO
SELECT a.columns
FROM DB1.database_name.dbo.table_name a
INNER JOIN DB2.database_name.dbo.table_name b
ON a.columnId = b.columnId
GO
Menghubungkan server - http://msdn.microsoft.com/en-us/library/ms188279.aspx