Podařilo se mi nastavit propojený server se vzdálenou databází Oracle, což skončilo jako vícekrokový proces:
- Nainstalujte ovladače Oracle ODBC na SQL Server.
- Vytvořte systémové DSN pro databázi Oracle na serveru SQL.
- Vytvořte propojený server na serveru SQL pomocí systémového DSN.
Krok 1:Nainstalujte ovladače Oracle ODBC na server
A. Stáhněte si potřebné balíčky Oracle Instant Client:Basic, ODBC a SQL*Plus (volitelné)
b. Rozbalte balíčky do místního adresáře na serveru SQL, obvykle C:\Oracle
. Výsledkem by měl být [adresář] jako C:\Oracle\instantclient_10_2
, což bude hodnota [adresář] odkazovaná ve zbytku této odpovědi.
C. Vytvořte textový soubor s názvem tnsnames.ora
v rámci okamžitého klienta [adresář], který obsahuje následující:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=acc)
)
)
Poznámka:Aktuální HOST
, PORT
a SERVICE_NAME
se bude lišit v závislosti na serveru Oracle, ke kterému se připojujete. Tyto informace lze často nalézt pomocí nástrojů síťového klienta Oracle v části posluchači .
OracleTnsName
může být jakýkoli název, který chcete přiřadit zdroji dat Oracle, a bude použit při nastavování systémového DSN. Pokud chcete, můžete také použít výše uvedenou syntaxi k definování více názvů TNS ve stejném souboru tnsnames.ora.
d. Přidejte [adresář] do systémového PATH
proměnná prostředí.
E. Vytvořte novou systémovou proměnnou prostředí s názvem TNS_Admin
který má hodnotu [adresář]
F. Spusťte [directory]\odbc_install.exe
k instalaci ovladačů Oracle ODBC.
G. Je doporučeno restartovat SQL server, ale nemusí to být nutné. Také můžete chtít udělit bezpečnostní oprávnění tomuto adresáři pro uživatelské identity SQL serveru a agenta SQL.
Krok 2:Vytvořte systémový DNS, který používá ovladač Oracle ODBC
A. Otevřete Správce zdroje dat ODBC nářadí. [ Nástroje pro správu --> Zdroje dat (ODBC) ]
b. Vyberte kartu Systémové DSN a poté klepněte na tlačítko Přidat.
C. V seznamu ovladačů vyberte Oracle in instantclient {version} . (např. „Oracle v instantclient 10_2“) a poté vyberte tlačítko Dokončit.
d. Zadejte následující:
Data Source Name
:{System DSN Name}Description
:{nechejte prázdné/prázdné}TNS Service Name
:by měl mítOracleTnsName
které jste definovali vtnsnames.ora
soubor, vyberte jej jako hodnotu.- ID uživatele :{Uživatelské jméno Oracle}
E. Vyberte tlačítko Test připojení. Měli byste být vyzváni k zadání {uživatelského hesla Oracle}. Pokud vše půjde dobře, test bude úspěšný.
Krok 3:Vytvořte propojený server v SQL s databází Oracle
Otevřete okno dotazu na serveru SQL a proveďte následující:
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}'
Poznámka:{Linked Server Name}
může být cokoliv, co chcete použít při odkazování na server Oracle, kromě {System DNS Name}
musí odpovídá názvu systému DSN, který jste vytvořili dříve.
{Oracle User Name}
by mělo být stejné jako ID uživatele používané systémovým DSN a {Oracle User Password}
by měla být stejná, jakou jste použili k úspěšnému testování připojení ODBC. Informace o odstraňování problémů s propojeným serverem Oracle naleznete v KB 280106.
Dotaz na propojený server Oracle
OPENQUERY můžete použít ke spouštění předávacích dotazů na propojeném serveru Oracle, ale uvědomte si, že pro velmi velké sady záznamů můžete obdržet ORA-01652
chybová zpráva, pokud zadáte ORDER BY
klauzule v předávacím dotazu. Přesunutí ORDER BY
klauzule z předávacího dotazu do vnějšího příkazu select za mě tento problém vyřešila.