Bạn sẽ cần sử dụng sp_addlinkedserver
để tạo liên kết máy chủ. Xem tài liệu tham khảo để sử dụng. Khi liên kết máy chủ được thiết lập, bạn sẽ tạo truy vấn như bình thường, chỉ cần thêm tiền tố vào tên cơ sở dữ liệu với máy chủ khác. I.E:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
Sau khi liên kết được thiết lập, bạn cũng có thể sử dụng OPENQUERY
để thực thi một câu lệnh SQL trên máy chủ từ xa và chỉ chuyển dữ liệu trở lại cho bạn. Điều này có thể nhanh hơn một chút và nó sẽ cho phép máy chủ từ xa tối ưu hóa truy vấn của bạn. Nếu bạn lưu dữ liệu vào bộ nhớ cache trong bảng tạm thời (hoặc trong bộ nhớ) trên DB1
trong ví dụ trên, bạn sẽ có thể truy vấn nó giống như tham gia một bảng tiêu chuẩn. Ví dụ:
-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
Kiểm tra tài liệu cho OPENQUERY để xem thêm một số ví dụ. Ví dụ trên là khá giả. Tôi chắc chắn sẽ sử dụng phương pháp đầu tiên trong ví dụ cụ thể này, nhưng tùy chọn thứ hai sử dụng OPENQUERY
có thể tiết kiệm thời gian và hiệu suất nếu bạn sử dụng truy vấn để lọc ra một số dữ liệu.