Tôi đã có thể thiết lập một máy chủ được liên kết với cơ sở dữ liệu Oracle từ xa, kết thúc là một quy trình gồm nhiều bước:
- Cài đặt trình điều khiển Oracle ODBC trên SQL Server.
- Tạo DSN hệ thống cho cơ sở dữ liệu Oracle trên SQL Server.
- Tạo máy chủ được liên kết trên máy chủ SQL bằng System DSN.
Bước 1:Cài đặt trình điều khiển Oracle ODBC trên máy chủ
một. Tải xuống các gói Oracle Instant Client cần thiết:Basic, ODBC và SQL * Plus (tùy chọn)
b. Giải nén các gói vào một thư mục cục bộ trên máy chủ SQL, thường là C:\Oracle
. Điều này sẽ dẫn đến một [thư mục] như C:\Oracle\instantclient_10_2
, sẽ là giá trị của [thư mục] được tham chiếu trong phần còn lại của câu trả lời này.
c. Tạo tệp văn bản có tên tnsnames.ora
trong [thư mục] ứng dụng khách tức thì có chứa thông tin sau:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=acc)
)
)
Lưu ý:HOST
thực tế , PORT
và SERVICE_NAME
sẽ khác nhau dựa trên máy chủ Oracle mà bạn đang thiết lập kết nối. Thông tin này thường có thể được tìm thấy bằng cách sử dụng các công cụ máy khách mạng Oracle trong trình nghe .
OracleTnsName
có thể là bất kỳ tên nào bạn muốn gán cho nguồn dữ liệu Oracle, và sẽ được sử dụng khi thiết lập DSN hệ thống. Bạn cũng có thể sử dụng cú pháp trên để xác định nhiều tên TNS trong cùng một tệp tnsnames.ora nếu muốn.
d. Thêm [thư mục] vào hệ thống PATH
biến môi trường.
e. Tạo biến môi trường hệ thống mới có tên TNS_Admin
có giá trị là [thư mục]
f. Thực thi [directory]\odbc_install.exe
tiện ích để cài đặt trình điều khiển ODBC Oracle.
g. Bạn nên khởi động lại máy chủ SQL, nhưng có thể không cần thiết. Ngoài ra, bạn có thể muốn cấp quyền bảo mật cho thư mục này đối với danh tính người dùng máy chủ SQL và tác nhân SQL.
Bước 2:Tạo DNS hệ thống sử dụng trình điều khiển Oracle ODBC
một. Mở Quản trị viên nguồn dữ liệu ODBC dụng cụ. [Công cụ quản trị -> Nguồn dữ liệu (ODBC)]
b. Chọn tab Hệ thống DSN và sau đó chọn nút Thêm.
c. Trong danh sách trình điều khiển, chọn Oracle trong Instantclient {version} . (ví dụ:'Oracle trong Instantclient 10_2') rồi chọn nút Kết thúc.
d. Chỉ định những điều sau:
-
Data Source Name
:{Tên DSN hệ thống} -
Description
:{để trống / để trống} -
TNS Service Name
:nên cóOracleTnsName
bạn đã xác định trongtnsnames.ora
tệp được liệt kê, hãy chọn nó làm giá trị. - ID Người dùng :{Tên người dùng Oracle}
e. Chọn nút Kiểm tra kết nối. Bạn sẽ được nhắc cung cấp {Oracle user password}. Nếu mọi việc suôn sẻ, bài kiểm tra sẽ thành công.
Bước 3:Tạo máy chủ được liên kết trong SQL với cơ sở dữ liệu Oracle
Mở cửa sổ truy vấn trong máy chủ SQL và thực hiện như sau:
EXEC sp_addlinkedserver
@server = '{Linked Server Name}'
,@srvproduct = '{System DSN Name}'
,@provider = 'MSDASQL'
,@datasrc = '{System DSN Name}'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = '{Linked Server Name}'
,@useself = 'False'
,@locallogin = NULL
,@rmtuser = '{Oracle User Name}'
,@rmtpassword = '{Oracle User Password}'
Lưu ý:{Linked Server Name}
có thể là bất kỳ thứ gì bạn muốn sử dụng khi tham chiếu đến máy chủ Oracle, nhưng {System DNS Name}
phải khớp với tên của DSN hệ thống mà bạn đã tạo trước đó.
{Oracle User Name}
phải giống với User ID được sử dụng bởi DSN của hệ thống và {Oracle User Password}
phải giống như bạn đã sử dụng để kiểm tra thành công kết nối ODBC. Xem KB 280106 để biết thông tin về cách khắc phục sự cố máy chủ liên kết Oracle.
Truy vấn máy chủ được liên kết Oracle
Bạn có thể sử dụng OPENQUERY để thực hiện các truy vấn chuyển qua trên máy chủ được liên kết của Oracle, nhưng lưu ý rằng đối với các tập bản ghi rất lớn, bạn có thể nhận được ORA-01652
thông báo lỗi nếu bạn chỉ định một ORDER BY
mệnh đề trong truy vấn chuyển. Di chuyển ORDER BY
mệnh đề từ truy vấn chuyển đến câu lệnh chọn bên ngoài đã giải quyết được vấn đề này cho tôi.