LIÊN KẾT SQLSERVER BẰNG THỦ TỤC HỆ THỐNG

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 31)

Liên kết các máy chủ SQL Server cung cấp khả năng truy cập dữ liệu từ các nguồn dữ liệu từ xa. Bằng cách sử dụng các cơ chế chúng ta có thể truy cập, thực hiện các thao tác sửa đổi, bổ sung dữ liệu và thực hiện các thủ tục từ xa. Có thể sử dụng lệnh Transact-SQL với chức năng OPENROWSET để truy vấn một nguồn dữ liệu từ xa mà không cần một linked server.

Để tạo liên kết server bằng thủ tục hệ thống chúng ta sử dụng thủ tục có tên sp_addlinkedserver với cú pháp như sau:

Sp_adlinkedserver [@server=] ‘server’

[,[@srvproduct=] ‘product_name’] [,[@provider=] ‘provider_name’] [,[@datasrc=] ‘data_source’] [,[@location=] ‘location’]

[,[catalog=] ‘catalog’] Trong đó, tham số:

[@server=] ‘server’: Tên server dùng để tham chiếu khi bạn khai báo truy cập dữ liệu [@srvproduct=] ‘product_name’: Tên sản phẩm ứng với cơ sở dữ liệu SQL Server. Trong trường hợp này chúng ta không cần cung cấp tham số này

[@provstr=] ‘provider_string’: Chuỗi ứng với trình điều khiển cơ sở dữ liệu

[@datasrc=] ‘data_source’: Tên Server hay địa chỉ IP cài đặt SQL Server mà bạn muốn tạo liên kết.

[@catalog=] ‘catalog’: Tên cơ sở dữ liệu bạn muốn truy cập sau khi liên kết

Sau khi tạo liên kết SQL Server thành công, để có thể truy cập và sử dụng dữ liệu trong các đối tượng Table hay View của cơ sở dữ liệu muốn liên kết đến, chúng ta cần khai báo đặc quyền truy cập.

Người quản trị hệ thống có thể điều khiển và có thể truy xuất một máy chủ liên kết cá biệt bằng việc thiết lập một ánh xạ đăng nhập bằng cách sử dụng thủ tục hệ thốngsp_addlinkedsrvlogin. Thủ tục này cho phép thiết lập từ xa một tên đăng nhập và mật khẩu cho một tên đăng nhập nội bộ cụ thể. Thủ tục cũng cho phép để thiết lập chính ánh xạ cho các đăng nhập xác thực Windows.

Chúng ta sử dụng thủ tục hệ thống có tên sp_addlinkedsrvlogin với cú pháp như sau: Sp_addlinkedsrvlogin [@rmtsrvname=] ‘rmtsrvname’] [,[@useself=] ‘useself’] [,[@locallogin=] ‘locallogin’] [,[@rmtuser=] ‘rmtuser’] [,[@rmtpassword=] ‘rmtpassword’] Trong đó, tham số:

[@rmtsrvname=] ‘rmtsrvname’: Tên máy chủ liên kết.

[@useself=] ‘useself’: Khi giá trị thật sự được sử dụng, các SQL cục bộ đăng nhập được sử dụng để kết nối vào tên máy chủ từ xa. Nếu giá trị chưa sử dụng thì các tham số locallogin, rmtuser và rmtpassword của thủ tục sp_addlinkedsrvlogin sẽ được áp dụng vào việc lập một ánh xạ mới.

[@locallogin=] ‘locallogin’: Tên đăng nhập. Nếu tham số này là rỗng thì việc thiết lập ánh xạ sẽ được áp dụng cho tất cả các tên đăng nhập.

[@rmtuser=] ‘rmtuser’: Tên của người dùng từ xa.

[@rmtpassword=] ‘rmtpassword’: Mật khẩu của người dùng từ xa.

Chú ý bảo mật: Khi kết nối đến một nguồn dữ liệu khác, SQL Server đóng vai trò đăng nhập hợp lý cho Windows xác thực của các đăng nhập; Tuy nhiên, SQL Server không thể đóng vai trò cho Windows xác thực các đăng nhập. Do đó, với SQL Server xác thực các đăng nhập, SQL Server có thể truy xuất nguồn dữ liệu khác như là các file hoặc các nguồn dữ liệu không quan hệ như Active Directory, bằng cách sử dụng các ngữ cảnh bảo mật của tài khoản trong Windows cấp dưới mà dịch vụ SQL Server đang chạy. Để làm điều này có khả năng đưa đăng nhập truy xuất đến các nguồn dữ liệu khác mà chúng không có phân quyền, nhưng các tài khoản dưới của dịch vụ SQL Server đang chạy không được phân quyền. Khả năng này nên được cân nhắc kỹ khi truy xuất đến một SQL Server xác thực đăng nhập đến một máy chủ liên kết bằng cách sử dụng thủ tục sp_addlinkedsrvlogin. 4) CÁC CÂU TRUY VẤN PHÂN TÁN

Các câu truy vấn phân tán truy xuất dữ liệu từ nhiều nguồn dữ liệu hỗn tạp (không đồng nhất). Những nguồn dữ liệu có thể được lưu trữ trong cùng hoặc các máy tính khác.Microsoft SQL Server 2005 hỗ trợ các câu truy vấn phân tán bằng cách sử dụng OLE DB. Với những thông tin về những tính năng mới và nâng cao cho các câu truy vấn phân tán. Người sử dụng SQL Server có thể sử dụng các câu truy vấn phân tán để truy xuất như sau:

• Dữ liệu phân tán được lưu trữ trong nhiều mẫu cài đặt của SQL Server.

• Các dữ liệu hỗn tạp lưu trữ trong các quan hệ khác nhau và các dữ liệu không quan hệ truy xuất bằng sử dụng một OLE DB provider.

Nguồn cung cấp OLE DB đặt dữ liệu vào các đối tượng được xếp thành bảng gọi là các rowset. SQL Server cho phép các rowset từ nguồn cung cấp OLE DB được tham chiếu đến các câu lệnh Transact-SQL như là các bảng.

Các table và view trong các nguồn dữ liệu bên ngoài có thể tham chiếu trực tiếp trong các câu lệnh Transact-SQL gồm: SELECT, INSERT, UPDATE, và DELETE.

Chú ý: Việc sử dụng các câu truy vấn phân tán trong SQL Server là tương tự các chức năng của bảng liên kết qua ODBC. Chức năng này được hỗ trợ trước đây của Microsoft Access, bây giờ được xây dựng vào SQL Server sử dụng OLE DB như là giao diện cho dữ liệu bên ngoài.

Minh hoạ sau đây trình bày các kết nối giữa một máy trạm với một mẫu cài đặt của SQL Server với một nguồn cung cấp OLE DB.

Việc chỉ rỏ một mẫu cài đặt của SQL Server 2008 trong một máy chủ đang chạy đa mẫu cài đặt của SQL Server 2008 đòi hỏi cú pháp không thay đổi đến các yếu tố của Transact-SQL mà đã được sử dụng trong các câu truy vấn phân tán. Các mẫu cài đặt có thể được xác định trong các câu truy vấn phân tán bằng cách sử dụng một trong các phương pháp sau:

• Xác định một tên máy chủ bằng cách sử dụng cú

• pháp 'server_name\instance_name' trong thamsố @datasrc của sp_addlinkedserver.

• Xác định 'server=server_name\instance_name' trong chuổi kết nối (connection string).

Nếu một mẫu cài đặt không được xác định, câu truy vấn phân tán kết nối đến cài đặt mặt định của SQL Server 2005 trong máy chủ đã chỉ định.

Ví dụ: Chỉ định một mẫu cài đặt có tên là CNTT trong một máy chủ có tên là DHCNTT như sau: (adsbygoogle = window.adsbygoogle || []).push({});

+ Chỉ định một liên kết server trong một mẫu cài đặt của SQL Server sử dụng @datasrc:

sp_addlinkedserver @server = 'DHCNTT/CNTT_1', @provider = 'SQLOLEDB',@datasource = ‘DHCNTT/CNTT’

+ Chỉ định một liên kết server trong một mẫu cài đặt của SQL Server sử dụng INSTANCENAME trong một chuỗi “provider”:

sp_addlinkedserver @server = ' DHCNTT/CNTT_2', @provider = 'SQLOLEDB', @provstr = 'Server=DHCNTT;INSTANCENAME=CNTT'

+ Chỉ định một mẫu cài đặt của SQL Server trong OPEN DATASOURCE sử dụng Data Source:

SELECT *

FROM OPENDATASOURCE( 'SQLOLEDB',

'Data Source= DHCNTT/CNTT;User ID=sa;Password=123' ).Northwind.dbo.Categories

+ Chỉ định một mẫu cài đặt của SQL Server trong OPENROWSET sử dụng một chuỗi người cung cấp (provider): SELECT a.* FROM OPENROWSET( 'SQLOLEDB', 'Data Source=DHCNTT;INSTANCENAME=CNTT; User ID=sa;Password=123', Northwind.dbo.Categories ) AS a

+ Chỉ định một mẫu cài đặt của SQL Server trong OPENROWSET sử dụng một tham số của nguồn dữ liệu (datasource):

SELECT a.*

FROM OPENROWSET(

'SQLOLEDB', ‘DHCNTT/CNTT ','sa','123', 'SELECT * FROM Northwind.dbo.Categories' ) AS a

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 31)