Saya dapat menyiapkan server tertaut ke database Oracle jarak jauh, yang akhirnya menjadi proses multi-langkah:
- Instal driver Oracle ODBC di SQL Server.
- Buat DSN Sistem ke database Oracle di SQL Server.
- Buat server tertaut di server SQL menggunakan Sistem DSN.
Langkah 1:Instal driver Oracle ODBC di server
sebuah. Unduh paket Oracle Instant Client yang diperlukan:Basic, ODBC, dan SQL*Plus (opsional)
b. Buka zip paket ke direktori lokal di server SQL, biasanya C:\Oracle
. Ini akan menghasilkan [direktori] seperti C:\Oracle\instantclient_10_2
, yang akan menjadi nilai [direktori] yang dirujuk di sisa jawaban ini.
c. Buat file teks bernama tnsnames.ora
dalam [direktori] klien instan yang berisi berikut ini:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=acc)
)
)
Catatan:HOST
Act yang sebenarnya , PORT
, dan SERVICE_NAME
akan bervariasi berdasarkan server Oracle tempat Anda membuat koneksi. Informasi ini sering dapat ditemukan menggunakan alat klien jaringan Oracle di bawah pendengar .
OracleTnsName
dapat berupa nama apa pun yang ingin Anda tetapkan ke sumber data Oracle, dan akan digunakan saat menyiapkan sistem DSN. Anda juga dapat menggunakan sintaks di atas untuk mendefinisikan beberapa nama TNS dalam file tnsnames.ora yang sama jika diinginkan.
d. Tambahkan [direktori] ke sistem PATH
variabel lingkungan.
e. Buat variabel lingkungan sistem baru bernama TNS_Admin
yang memiliki nilai [direktori]
f. Jalankan [directory]\odbc_install.exe
utilitas untuk menginstal driver Oracle ODBC.
g. Direkomendasikan agar Anda me-reboot server SQL, tetapi mungkin tidak diperlukan. Selain itu, Anda mungkin ingin memberikan izin keamanan ke direktori ini untuk server SQL dan identitas pengguna agen SQL.
Langkah 2:Buat DNS Sistem yang menggunakan driver Oracle ODBC
sebuah. Buka Administrator Sumber Data ODBC alat. [ Alat Administratif --> Sumber Data (ODBC) ]
b. Pilih tab System DSN lalu pilih tombol Add.
c. Dalam daftar driver, pilih Oracle di instantclient {version} . (mis. 'Oracle in instantclient 10_2') lalu pilih tombol Selesai.
d. Tentukan berikut ini:
Data Source Name
:{Nama DSN Sistem}Description
:{kosongkan/kosongkan}TNS Service Name
:harus memilikiOracleTnsName
Anda definisikan ditnsnames.ora
file terdaftar, pilih sebagai nilainya.- ID Pengguna :{Nama pengguna Oracle}
e. Pilih tombol Uji Koneksi. Anda akan diminta untuk memberikan {Oracle user password}. Jika semuanya berjalan dengan baik, tes akan berhasil.
Langkah 3:Buat server tertaut di SQL ke database Oracle
Buka jendela kueri di server SQL dan jalankan perintah berikut:
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}'
Catatan:{Linked Server Name}
bisa apa saja yang ingin Anda gunakan saat mereferensikan server Oracle, tetapi {System DNS Name}
harus cocok dengan nama sistem DSN yang Anda buat sebelumnya.
{Oracle User Name}
harus sama dengan User ID yang digunakan oleh sistem DSN, dan {Oracle User Password}
harus sama dengan yang Anda gunakan untuk menguji koneksi ODBC dengan sukses. Lihat KB 280106 untuk informasi tentang pemecahan masalah server terkait Oracle.
Meminta server tertaut Oracle
Anda dapat menggunakan OPENQUERY untuk mengeksekusi kueri pass-through pada server tertaut Oracle, tetapi perlu diketahui bahwa untuk kumpulan data yang sangat besar, Anda mungkin menerima ORA-01652
pesan kesalahan jika Anda menentukan ORDER BY
klausa dalam kueri pass-through. Memindahkan ORDER BY
klausa dari kueri pass-through ke pernyataan pemilihan luar memecahkan masalah ini untuk saya.