Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Podłączanie Oracle 21c do SQL Server

Użyj sterownika ODBC SQL Server z agentem Oracle Heterogenous Services ODBC, DG4ODBC, aby połączyć Oracle 21c z SQL Server.

  1. Sprawdź, czy Twoja wersja DG4ODBC jest 32-bitowa czy 64-bitowa:
    file dg4odbc

    Jeśli file dane wyjściowe polecenia zawierają „64-bitowy plik wykonywalny ELF LSB” lub coś podobnego, DG4ODBC jest 64-bitowy i musisz użyć 64-bitowej wersji sterownika ODBC SQL Server.

    W przeciwnym razie pobierz 32-bitowy sterownik ODBC SQL Server dla swojej platformy.

  2. Zainstaluj, uzyskaj licencję i przetestuj sterownik ODBC programu SQL Server na komputerze, na którym zainstalowano DG4ODBC.

    Aby uzyskać instrukcje dotyczące instalacji, zobacz dokumentację sterownika ODBC programu SQL Server. Zapoznaj się z dokumentacją, aby sprawdzić, które zmienneśrodowiskowe należy ustawić (LD_LIBRARY_PATH , LIBPATH , LD_RUN_PATH lub SHLIB_PATH w zależności od platformy i linkera).

  3. Utwórz plik inicjujący DG4ODBC. Na przykład:
    cd $ORACLE_HOME/hs/admin
    cp initdg4odbc.ora initmssql.ora
  4. Upewnij się, że te parametry i wartości są obecne w Twoim pliku początkowym:
    HS_FDS_CONNECT_INFO = my_sql_server_odbc_dsn
    HS_FDS_SHAREABLE_NAME = /usr/local/easysoft/unixODBC/lib/libodbc.so
    HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 
    

    Zastąp my_sql_server_odbc_dsn z nazwą źródła danych sterownika ODBC SQL Server, który łączy się z docelową bazą danych SQL Server.

  5. Dodaj wpis do $ORACLE_HOME/network/admin/listener.ora który tworzy SID_NAME dla DG4ODBC. Na przykład:
    SID_LIST_LISTENER =
     (SID_LIST =
       (SID_DESC=
         (SID_NAME=mssql)
         (ORACLE_HOME=oracle_home_directory)
         (PROGRAM=dg4odbc)
         (ENVS=LD_LIBRARY_PATH = /usr/local/easysoft/unixODBC/lib:
                /usr/local/easysoft/lib)
       )
     )
    

    Zastąp oracle_home_directory o wartości $ORACLE_HOME .

  6. Dodaj wpis DG4ODBC do $ORACLE_HOME/network/admin/tnsnames.ora który określa SID_NAME utworzony w poprzednim kroku. Na przykład:
    MSSQL=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
       (CONNECT_DATA= (SID=mssql))
       (HS=OK)
     )
  7. Uruchom (lub uruchom ponownie) Oracle Listener:
    cd $ORACLE_HOME/bin
    ./lsnrctl stop
    ./lsnrctl start
  8. Połącz się z bazą danych Oracle w SQL*Plus.
  9. W SQL*Plus utwórz łącze bazy danych dla docelowej bazy danych SQL Server. Na przykład:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

    Zastąp dbuser i hasło bazy danych z prawidłową nazwą użytkownika i hasłem dla docelowej bazy danych SQL Server.

Notatki
  • Wersja Oracle 21c DG4ODBC nie używa już SQLDriverConnect aby połączyć się ze źródłem danych ODBC. Używa SQLConnect zamiast tego, co nie obsługuje HS_NLS_NCHAR = UCS2 . Podobnie połączenia bez DSN nie działają z SQLConnect .
  • Jeśli tabela połączona zawiera kolumnę o nazwie ROWID, zapytanie zakończy się błędem:
    ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

    Aby obejść ten problem, zmień nazwę kolumny z ROWID na ROWNUM.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wdrażanie i konfigurowanie ODP.NET do pracy bez instalacji z Entity Framework

  2. Automatyczny przyrost dla Oracle

  3. PLSQL Wstaw do z podzapytanie i klauzulą ​​zwracającą

  4. C# - Jak uzyskać wartość typu Oracle Long Raw?

  5. MySQL odpowiednik Oracle SEQUENCE.NEXTVAL