2008-11-21 21 views
21

Tôi có thể tạo và thực hiện gói DTS sao chép bảng từ cơ sở dữ liệu Oracle từ xa sang máy chủ SQL cục bộ, nhưng muốn thiết lập kết nối với cơ sở dữ liệu Oracle dưới dạng máy chủ được liên kết.Làm cách nào để bạn thiết lập máy chủ được liên kết với cơ sở dữ liệu Oracle trên SQL 2000/2005?

Các gói DTS hiện đang sử dụng các nhà cung cấp Microsoft OLE DB cho Oracle với các thuộc tính sau:

  • Data Source: SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=acc)));uid=*UserName*;pwd=*UserPassword*;
  • Mật khẩu: UserPassword
  • User ID: UserName
  • Cho phép lưu mật khẩu: đúng

Làm cách nào để thiết lập máy chủ được liên kết đến cơ sở dữ liệu Oracle bằng cách sử dụng nguồn dữ liệu được xác định ở trên?

Trả lời

36

tôi đã có thể thiết lập một máy chủ kết nối với một cơ sở dữ liệu Oracle từ xa, mà kết thúc là một quá trình gồm nhiều bước:

  1. Cài đặt trình điều khiển ODBC Oracle trên SQL Server.
  2. Tạo hệ thống DSN cho cơ sở dữ liệu Oracle trên SQL Server.
  3. Tạo máy chủ được liên kết trên máy chủ SQL bằng cách sử dụng Hệ thống DSN.

Bước 1: Cài đặt trình điều khiển Oracle ODBC trên máy chủ

a. Tải xuống gói Oracle Instant Client cần thiết: Cơ bản, 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 [thư mục] như C:\Oracle\instantclient_10_2, đây 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 một file văn bản có tên tnsnames.ora trong khách hàng ngay lập tức thư mục [] chứa sau:

OracleTnsName = 
(
    DESCRIPTION= 
    (
    ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521) 
) 
    (
    CONNECT_DATA = (SERVICE_NAME=acc) 
) 
) 

Lưu ý: Thực tế HOST, PORT, và SERVICE_NAME sẽ khác nhau dựa trên Oracle server bạn đang thiết lập một kết nối đến. 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 của Oracle dưới các 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 là TNS_Admin có giá trị [thư mục]

f. Thực hiện tiện ích [directory]\odbc_install.exe để cài đặt trình điều khiển ODBC của 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 cho máy chủ SQL và danh tính người dùng đại lý SQL.

Bước 2: Tạo một DNS Hệ thống có sử dụng trình điều khiển Oracle ODBC

a. Mở công cụ Quản trị viên nguồn dữ liệu ODBC công cụ. [Công cụ quản trị -> Nguồn dữ liệu (ODBC)]

b. Chọn tab DSN hệ thống 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 tức thời 10_2') và sau đó chọn nút Kết thúc.

d. Xác định như sau:

  • Data Source Name: {System DSN Tên}
  • Description: {để trống/trống}
  • TNS Service Name: nên các OracleTnsName bạn định nghĩa trong file tnsnames.ora liệt kê, chọn nó làm giá trị.
  • User ID: {Oracle tên user}

e. Chọn nút Kiểm tra kết nối. Bạn sẽ được nhắc cung cấp {mật khẩu người dùng Oracle}. Nếu mọi việc suôn sẻ, thử nghiệm sẽ thành công.

Bước 3: Tạo máy chủ được liên kết trong SQL cơ sở dữ liệu Oracle

mở một cửa sổ truy vấn trong SQL server 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 ý: Các {Linked Server Name} có thể bất cứ điều 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 đây.

{Oracle User Name} phải giống với ID người dùng được hệ thống DSN sử dụ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ủ được liên kết với Oracle.

Truy vấn Oracle liên kết máy chủ

Bạn có thể sử dụng OPENQUERY để thực hiện các truy vấn pass-through trên Oracle liên kết máy chủ, nhưng lưu ý rằng cho recordsets rất lớn, bạn có thể nhận được một thông điệp ORA-01652 lỗi nếu bạn chỉ định một Điều khoản ORDER BY trong truy vấn chuyển tiếp. Di chuyển mệnh đề ORDER BY từ truy vấn thông qua tới câu lệnh chọn bên ngoài đã giải quyết vấn đề này cho tôi.

+0

Xin chào, tôi thấy rằng [srvproduct] có cùng giá trị với [datasrc] trong cuộc gọi tới sp_addlinkedserver. Cũng muốn hỏi bạn nếu cài đặt Oracle 11g express và ODT với ODAC 11.1 tôi có thể thử nghiệm một máy chủ được liên kết với Oracle hay không. –

+0

Câu hỏi/câu trả lời đã được đăng trong năm 2008 trước Oracle 11g. Cố gắng thiết lập một máy chủ được liên kết mới có lẽ nên giống nhau nhưng tôi không biết chắc chắn. – Oppositional

+2

Cảm ơn câu trả lời hoàn hảo. Giúp tôi có được máy chủ liên kết Oracle của tôi tất cả các thiết lập và làm việc trong một vài giờ. Chỉ cần thêm, điều này dường như làm việc tốt với SQL 2012 và Oracle 11g R2. – Cashley

1

Tôi cũng gặp vấn đề tương tự. Tôi đã nói chuyện điện thoại với Microsoft hàng giờ liền, và họ không có giải pháp. Không có cài đặt "thời gian chờ kết nối" nào giúp tôi.

Để giải quyết, tôi đã tạo một công việc DTS chạy một proc chỉ cập nhật thời gian trên một hàng, trong một cột, cứ hai phút một lần. Sau đó, tôi thiết lập một bản sao giữa SQL Server và Oracle, dự kiến ​​sẽ nhân rộng sự thay đổi tế bào đơn lẻ đó, từ SQL thành Oracle, cứ 3 phút một lần. Nó giữ cho kết nối còn sống!

Các vấn đề liên quan