Kiến thức về linked server trong SQL Server

  • Monday 26/05/2025

Linked Server là một cấu hình trong SQL Server cho phép một phiên bản SQL Server (gọi là Local Server) kết nối và thực thi các câu lệnh SQL trên một phiên bản SQL Server khác hoặc một nguồn dữ liệu OLE DB bất kỳ (ví dụ: Oracle, MySQL, Excel, Access, v.v.). Trong môi trường doanh nghiệp hiện đại, dữ liệu thường được phân tán trên nhiều hệ thống và máy chủ khác nhau. Để truy cập và kết hợp dữ liệu từ các nguồn này một cách liền mạch từ một phiên bản SQL Server duy nhất, SQL Server cung cấp một tính năng mạnh mẽ được gọi là Linked Server (Máy chủ Liên kết).

1. Linked server là gì?

Linked Server là một cấu hình trong SQL Server cho phép một phiên bản SQL Server (gọi là Local Server) kết nối và thực thi các câu lệnh SQL trên một phiên bản SQL Server khác hoặc một nguồn dữ liệu OLE DB bất kỳ (ví dụ: Oracle, MySQL, Excel, Access, v.v.). Nói cách khác, nó tạo ra một “liên kết” từ SQL Server của chúng ta đến một máy chủ hoặc nguồn dữ liệu khác, cho phép chúng ta truy vấn dữ liệu từ xa như thể nó là dữ liệu cục bộ.

2. Tại sao cần sử dụng linked server?

Có nhiều lý do khiến chúng ta muốn sử dụng Linked Server:

2.1. Truy vấn dữ liệu phân tán

Cho phép chúng ta viết các câu lệnh SQL (chẳng hạn như SELECT, INSERT, UPDATE, DELETE) trải rộng trên nhiều máy chủ. Ví dụ, chúng ta có thể JOIN một bảng từ máy chủ A với một bảng từ máy chủ B.

2.2. Di chuyển dữ liệu

Dễ dàng chuyển dữ liệu giữa các máy chủ SQL Server khác nhau, hoặc giữa SQL Server và các hệ thống cơ sở dữ liệu khác.

2.3. Tích hợp dữ liệu

Kết hợp dữ liệu từ các nguồn khác nhau vào một báo cáo hoặc ứng dụng duy nhất.

2.4. Thực thi thủ tục từ xa

Chạy các thủ tục lưu trữ (stored procedures) trên máy chủ từ xa.

2.5. Quản trị tập trung

Giúp quản trị viên cơ sở dữ liệu có thể thực hiện một số tác vụ quản lý trên các máy chủ từ xa từ một điểm duy nhất.

3. Cách hoạt động của linked server

Linked Server hoạt động bằng cách sử dụng các nhà cung cấp OLE DB (OLE DB Providers). Mỗi nhà cung cấp OLE DB được thiết kế để kết nối với một loại nguồn dữ liệu cụ thể. Khi bạn cấu hình một Linked Server, bạn chỉ định nhà cung cấp OLE DB và thông tin kết nối cần thiết để SQL Server có thể giao tiếp với nguồn dữ liệu từ xa.

Khi một truy vấn được thực thi trên Linked Server:

  1. SQL Server cục bộ sẽ gửi yêu cầu truy vấn đến Linked Server.
  2. Linked Server (hoặc nguồn dữ liệu từ xa) sẽ xử lý truy vấn.
  3. Kết quả được trả về cho SQL Server cục bộ.

4. Cú pháp truy vấn

Để truy vấn dữ liệu trên Linked Server, bạn sử dụng cú pháp 4 phần:

SQL:

[LinkedServerName].[DatabaseName].[SchemaName].[ObjectName]

Trong đó:

  • LinkedServerName: Tên của Linked Server mà bạn đã cấu hình.
  • DatabaseName: Tên của cơ sở dữ liệu trên máy chủ từ xa.
  • SchemaName: Tên của schema trong cơ sở dữ liệu đó (ví dụ: dbo).
  • ObjectName: Tên của bảng, view hoặc stored procedure mà bạn muốn truy cập.

Ví dụ:

Linked Server

5. Cách cấu hình (Tổng quan)

Có hai cách chính để cấu hình Linked Server:

5.1. Sử Dụng SQL Server Management Studio (SSMS):

  • Mở SSMS và kết nối đến phiên bản SQL Server của bạn.
  • Trong Object Explorer, mở rộng Server Objects > Linked Servers.
  • Click chuột phải vào Linked Servers và chọn New Linked Server….
  • Cửa sổ New Linked Server sẽ xuất hiện, cho phép bạn nhập thông tin cấu hình:
    • General: Tên Linked Server, loại máy chủ (SQL Server hoặc Other data source), và tên máy chủ từ xa.
    • Security: Thiết lập cách thức xác thực khi kết nối đến máy chủ từ xa (ví dụ: sử dụng ngữ cảnh bảo mật hiện tại của người dùng, hoặc sử dụng một tài khoản cụ thể).
    • Server Options: Các tùy chọn bổ sung như Collation Compatible, Data Access, RPC, v.v.

Linked Server

5.2. Sử Dụng Transact-SQL (T-SQL):

Chúng ta có thể sử dụng thủ tục lưu trữ hệ thống sp_addlinkedserver và sp_addlinkedsrvlogin để cấu hình Linked Server.

Ví dụ tạo Linked Server đến một SQL Server khác:

Linked Server

6. Những điểm cần lưu ý khi sử dụng

  • Bảo mật: Đảm bảo rằng thông tin xác thực được sử dụng cho Linked Server là an toàn và có quyền truy cập phù hợp trên máy chủ từ xa.
  • Hiệu suất: Truy vấn qua Linked Server có thể chậm hơn nhiều so với truy vấn cục bộ do độ trễ mạng và việc truyền dữ liệu.
    • Tránh SELECT *: Chỉ chọn các cột bạn thực sự cần.
    • Lọc dữ liệu càng sớm càng tốt: Đẩy các điều kiện WHERE xuống máy chủ từ xa nếu có thể để giảm lượng dữ liệu được truyền qua mạng.
    • OPENQUERY và OPENROWSET: Đối với các truy vấn phức tạp hoặc yêu cầu đẩy toàn bộ logic xuống máy chủ từ xa, hãy cân nhắc sử dụng OPENQUERY hoặc OPENROWSET để thực thi truy vấn trực tiếp trên Linked Server, thay vì để SQL Server cục bộ cố gắng tự tối ưu hóa.
  • Phân tán giao dịch (Distributed Transactions): Nếu bạn thực hiện các giao dịch trải rộng trên nhiều máy chủ thông qua Linked Server, bạn cần phải cấu hình và bật Distributed Transaction Coordinator (MSDTC) trên tất cả các máy chủ liên quan.
  • Quản lý lỗi: Xử lý các lỗi kết nối hoặc lỗi truy vấn từ Linked Server một cách cẩn thận trong ứng dụng của bạn.
  • Tương thích phiên bản: Đảm bảo rằng phiên bản SQL Server cục bộ và phiên bản SQL Server từ xa (hoặc nguồn dữ liệu khác) có khả năng tương thích khi bạn cấu hình Linked Server.
  • Tên Server: Đảm bảo tên Linked Server không trùng lặp và dễ nhận diện.

Linked Server là một tính năng vô giá trong SQL Server cho phép chúng ta kết nối và làm việc với dữ liệu từ nhiều nguồn khác nhau một cách hiệu quả. Mặc dù nó mang lại sự linh hoạt đáng kể, điều quan trọng là phải hiểu cách thức hoạt động của nó, các cân nhắc về hiệu suất và bảo mật để triển khai và sử dụng nó một cách tối ưu trong môi trường của bạn.

Hy vọng qua bài viết này mọi người sẽ có thông tin hữu ích và hiểu rõ hơn một vài kiến thức cơ bản về kiến thức về linked server trong SQL Server.


P.A Việt Nam cung cấp đa dạng các Plan Hosting đáp ứng yêu cầu của khách hàng
Hosting Phổ Thông
Hosting Chất Lượng Cao
Hosting WordPress

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

5/5 - (1 bình chọn)