Menggabungkan tabel dari server yang berbeda

Adakah saran bagaimana cara menggabungkan tabel dari server yang berbeda dalam prosedur tersimpan?

Larutan

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
Komentar (1)

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
Komentar (1)

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 -

Komentar (0)