Tôi cần tham gia vào hai máy chủ cơ sở dữ liệu khác nhau (IP 10.0.0.50 và 10.0.0.51). Cách tốt nhất là gì?Làm cách nào để tạo và truy vấn các máy chủ cơ sở dữ liệu được liên kết trong SQL Server?
Trả lời
Bạn cần sử dụng sp_linkedserver để tạo máy chủ được liên kết.
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
Thông tin thêm có sẵn trên MSDN.
Giải pháp tôi thấy:
1) Chạy stored proc
exec sp_addlinkedserver @server='10.0.0.51'
2) Xác minh rằng các máy chủ được liên kết (danh sách các máy chủ liên kết)
exec sp_linkedservers
3) Chạy truy vấn sử dụng định dạng
[10.0.0.51].DatabaseName.dbo.TableName
Bạn có thể, như đã đề cập, sử dụng sp_addlinkedserver. Tuy nhiên, bạn cũng có thể làm điều này thông qua Enterprise Manager (2000) hoặc SQL Server Management Studio (2005). Trong nút "Bảo mật", có nút "Máy chủ được liên kết", bạn có thể sử dụng nút này để thêm và định cấu hình Máy chủ được Liên kết. Bạn có thể chỉ định thiết lập bảo mật, mạo danh, vv
Xem những cho SQL Server 2000:
Establishing Security For Linked Servers
Configuring OLEDB Providers for Distributed Queries
Xem những cho SQL Server 2005:
Tôi biết rằng câu trả lời ở trên là tốt, nhưng muốn chia sẻ một số chi tiết mà tôi hy vọng những người khác sẽ thấy hữu ích. Đáng nói đến là phần truy cập của người dùng, mà tôi nghĩ mọi người sẽ cần trợ giúp.
thiết lập liên kết:
exec sp_addlinkedserver @server='10.10.0.10\MyDS';
thiết lập quyền truy cập cho người dùng từ xa, ví dụ dưới đây:
exec sp_addlinkedsrvlogin '10.10.0.10\MyDS', 'false', null, 'adm', 'pwd';
thấy các máy chủ liên kết và đăng nhập người dùng :
exec sp_linkedservers;
select * from sys.servers;
select * from sys.linked_logins;
chạy truy vấn từ xa:
select * from [10.10.0.10\MyDS].MyDB.dbo.TestTable;
thả các máy chủ liên kết và những người sử dụng đăng nhập được tạo ra (ADM/pwd)
exec sp_dropserver '10.10.0.10\MyDS', 'droplogins'; -- drops server and logins
nguồn:
Không có prob. Có vẻ như bạn đã tìm thấy nó! –
Vâng - đó là một trong những điều mà tôi đã tìm ra câu trả lời ở đó, chỉ muốn lưu trữ howto trong ngăn xếp tràn :) – Kalid