02/10/2018, 00:38

Linked server SQL 2016 - kết nối 2 database từ 2 server khác nhau cùng làm việc trên một server SQL

Linked Server là cơ chế cho phép kết nối từ một SQL Server tới một database server khác (có thể là SQL Server hoặc các hệ thống khác). Nó giúp việc truy vấn hoặc cập nhật dữ liệu từ một server ở xa ngay trên SQL server của máy mình. Ví dụ: trong trường hợp ...

Linked Server là cơ chế cho phép kết nối từ một SQL Server tới một database server khác (có thể là SQL Server hoặc các hệ thống khác). Nó giúp việc truy vấn hoặc cập nhật dữ liệu từ một server ở xa ngay trên SQL server của máy mình. Ví dụ: trong trường hợp bạn muốn sao chép dữ liệu từ một database trong server local vào 1 database trong một server ở xa, linked server sẽ giải quyết câu truy vấn trên một cách gọn gàng mà không cần xài tool.

Tạo Linked server:
Đăng nhập vào SQL server. Để tạo linked server, trong Management Studtio 2016 bạn mở rộng node Server Objects/Linked Server, right click và chọn “New Linked Server”:

Tao-linked-server-sql-2016

Trong cửa sổ mở ra sau đó:
    * Trong tab General:
- Ô “Linked server” cho bạn nhập tên của linked server.
- Lựa chọn “Server type” cho phép bạn chọn “SQL Server” hoặc “Other data source”
Nếu bạn chọn “SQL Server”, các ô nhập liệu bị mờ đi và bạn chỉ có thể nhập vào ô “Linked server” là tên của SQL Server ở xa mà bạn muốn nối tới. Nói cách khác, tên của Linked server phải trùng với tên của SQL Server ở xa.
Nếu chọn “Other data source”, bạn có thể đặt tên Linked server tùy ý và bạn có thể kết nối tới 1 database server bất kỳ, SQL Server hoặc các hệ thống khác như Oracle, MySQL… (tất nhiên chỉ các hệ thống có thư viện kết nối hiện cài đặt trên server của bạn). Khi đặt lựa chọn này bạn cần chỉ định thêm một vài thông tin:
- Provider: tên của thư viện kết nối với server ở xa. Ví dụ nếu muốn kết nối với Oracle bạn cần chọn “Microsoft OLE DB Provider for Oracle”; nếu muốn kết nối với SQL Server 2008 bạn có thể chọn “SQL Server Native Client 10.0″.
- Product: đặt tên product 
- Data source: tên của server ở xa. (có thể nhập IP của server)

Linked-server-sql-2016-2

   * Trong tab security:
Bạn chọn “Be made using this security context” và nhập vào login và password. Đây là login nằm tại server ở xa và sẽ được dùng mỗi khi bạn truy nhập vào server ở xa thông qua linked server.
Lưu ý: Đây chính là user name và pass đăng nhập vào SQL server ở xa, nó phải tồn tại và đăng nhập được trên server đó.

linked-server-sql-2016-3

Nhấn OK để kết thúc việc khởi tạo.

Thực hiện truy vấn:

SELECT TOP 100 * FROM LAPTRINHVB_NET.Database_name.dbo.Table_name

Xem thử kết quả.

Bạn cũng có thể update bảng nếu như tài khoản login được dùng ở trên có quyền update bảng ở server đầu đằng kia. Và cần thiết lập một bước sau khi khởi tạo Linked: Đó là thiết lập RPC (Remote Procedure Call) tạm dịch là gọi thủ tục từ xa. Set giá trị thành True.

Linked-server-sql-2016-4

Lưu ý: Bước này cần phải thực hiện ngay trong bước khởi tạo Linked, nếu right-click/properties thì vẫn thiết lập được giá trị này, tuy nhiên một số phiên bản SQL sẽ báo lỗi “Ad hoc updates to system catalogs are not allowed. Error:259”

Sở dĩ như vậy vì bản 2005 trở về sau không cho phép update trực tiếp vào catalog hệ thống. Điều này quả là gây rắc rỗi. Bạn có thể đặt lại lựa chọn của SQL Server để vượt qua lỗi này, tuy nhiên cách dễ dàng và an toàn nhất là xóa linked server và tạo lại, và trong khi tạo lại bạn đặt các lựa chọn theo ý muốn.

Chúc các bạn thành công !

Nguồn: SQLViet

Tags:
0