KIẾN TRÚC CỦA CÂU TRUY VẤN PHÂN TÁN

Một phần của tài liệu TÌM HIỂU CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG SQL SERVER 2008 (Trang 36)

SQL Server hỗ trợ hai phương thức để tham chiếu nguồn dữ liệu OLE DB hỗn tạp trong câu lệnh Transact-SQL.

• Tên máy chủ liên kết (Linked server names):

Thủ tục bảo quản hệ thống (system storedprocedures) sp_addlinkedserver

sp_addlinkedsrvlogin được sử dụng để đưa một tên máy chủ đến một dữ liệu nguồn OLE DB. Các đối tượng trong các máy chủ liên kết có thể được tham chiếu trong các câu lệnh Transact-SQL sử dụng bốn thành phần. Ví dụ: nếu một máy chủ liên kết tên là CNTT được định nghĩa dựa vào một mẫu cài đặt khác của SQL Server 2008, câu lệnh sau tham chiếu một bảng trong máy chủ đó.

SELECT ten, ngaysinh

FROM CNTT.DB_QLSV.QLSV.HOSO_SV

Tên máy chủ liên kết cũng có thể được chỉ định trong một câu lệnh OPENQUERY để mở một rowset từ dữ liệu nguồn OLE DB. Rowset này có thể tham chiếu như là một bảng dữ liệu trong câu lệnh Transact-SQL.

• Tên bộ nối Ad hoc (Ad hoc connector names)

Để ít xảy ra các tham chiếu đến một dữ liệu nguồn, các chức năng OPENROWSET hoặc OPENDATASOURCE được chỉ định với các thông tin cần thiết để kết nối đến máy chủ liên kết. Rowset có thể được tham chiếu như cách một bảng được tham chiếu trong câu lệnh Transact-SQL.

Ví dụ câu lệnh truy vấn sau: SELECT *

FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'c:\MSOffice\Access\Samples\Northwind.mdb';'Admin';''; Employees)

Những người dùng SQL Server liên lạc giữa máy quan hệ và máy lưu trữ. Máy quan hệ ngắt xuống từng câu lệnh Transact-SQL vào một khối các hoạt động trong các rowset OLE DB đơn được mở bởi máy lưu trữ từ các bảng dữ liệu cơ sở. Nghĩa là máy quan hệ cũng có thể mở các rowset OLE DB đơn trong một vài dữ liệu nguồn OLE DB.

Máy quan hệ sử dụng các giao diện lập trình ứng dụng (API) OLE DB để mở các rowset trong các máy chủ liên kết, tìm nạp từng dòng và quản lý các giao tác (transaction). Mỗi dữ liệu nguồn OLE DB truy xuất như một máy chủ liên kết, một nguồn cung cấp OLE DB phải được hiện diện trong máy chủ đang chạy SQL Server. Việc thiết lập các hoạt động mà có thể sử dụng để dựa vào một chỉ định nguồn dữ liệu OLE DB phụ thuộc vào khả năng của nguồn cung cấp OLE DB.

Với mỗi mẫu cài đặt của SQL Server, các thành viên của nhóm sysadmin được cố định vai trò máy chủ cho phép hoặc không cho phép sử dụng các “tên bộ nối ad-hoc” cho một nguồn cung cấp OLE DB sử dụng thuộc tính của SQL Server là DisallowAdhocAccess. Khi ad-hoc truy xuất nó cho phép tất cả thành viên đã đăng nhập vào mẫu cài đặt đó có thể thực thi các câu lệnh SQL chứa đựng bộ nối ad-hoc, tham chiếu vào dữ liệu nguồn trong mạng mà có thể được truy xuất sử dụng nguồn cung cấp OLE DB. Để điều khiển việc truy xuất các thành viên có vai trò sysadmin có thể không cho phép ad-hoc truy xuất bởi nguồn cung cấp OLE DB. Theo cách đó giới hạn người dùng những nguồn dữ liệu tham chiếu bằng liên kết máy chủ chỉ được định nghĩa bởi người quản trị. Theo mặc định, truy xuất ad-hoc được nhúng trong nguồn cung cấp OLE DB và không cho phép tất cả các nguồn cung cấp khác.

Các câu truy vấn phân tán có thể cho phép người sử dụng truy xuất nguồn dữ liệu (ví dụ: các file, các nguồn dữ liệu không quan hệ ) sử dụng ngữ cảnh bảo mật của tài khoản Microsoft Windows mà SQL Server đang chạy. SQL Server đóng vai trò thích hợp

đăng nhập cho đăng nhập Windows; tuy nhiên, đó là điều không thể thực hiện được của việc đăng nhập SQL Server.

Đây có thể là khả năng cho phép một người dùng truy vấn phân tán truy xuất nguồn dữ liệu khác mà họ không được phân quyền, nhưng các tài khoảng bên dưới mà dịch vụ SQL Server đang chạy có phân quyền. Sử dụng sp_addlinkedsrvlogin để định nghĩa sự chỉ định đăng nhập mà uỷ quyền để truy xuất máy chủ tương ứng. Điều khiển này không có sẵn cho ad-hoc. Vì thế sử dụng thận trọng trong việc nhúng một nguồn cung cấp OLE DB cho truy xuất ad-hoc.

Khi có thể thực hiện được, SQL Server đẩy các hành động quan hệ như là nối, hạn chế, chiếu, sắp xếp, và nhóm bằng các thao tác đến nguồn dữ liệu OLE DB. SQL Server không mặc định quét bảng cơ sở vào SQL Server và biểu diễn chính các thao tác quan hệ. SQL Server truy vấn OLE DB quyết định mức của ngữ pháp của SQL mà nó hỗ trợ, và trên cơ sở các thông tin đó, việc đẩy như là nhiều thao tác quan hệ có thể thực hiện được đến nguồn cung cấp.

SQL Server 2008 chỉ rỏ một máy cho một nguồn cung cấp OLE DB để trả lại các trạng thái biểu thị các giá trị khoá ra sao được phân tán bên trong nguồn dữ liệu OLE DB. Điều này đặt ra cho tối ưu truy vấn SQL Server cao hơn phân tích kiểu dữ liệu trong nguồn dữ liệu dựa vào các yêu cầu của mỗi câu lệnh SQL, làm tăng thêm khả năng tối ưu truy vấn để tạo ra các kế hoạch thực thi tối ưu.

Một phần của tài liệu TÌM HIỂU CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG SQL SERVER 2008 (Trang 36)