sql >> Database >  >> RDS >> Oracle

Oracle 21c verbinden met SQL Server

Gebruik de SQL Server ODBC-driver met Oracle's Heterogene Services ODBC-agent, DG4ODBC, om Oracle 21c te verbinden met SQL Server.

  1. Controleer of uw versie van DG4ODBC 32-bits of 64-bits is:
    file dg4odbc

    Als het file de uitvoer van de opdracht "ELF 64-bit LSB executable" of iets dergelijks bevat, DG4ODBC is 64-bit en u moet een 64-bits versie van het SQL Server ODBC-stuurprogramma gebruiken.

    Download anders het 32-bits SQL Server ODBC-stuurprogramma voor uw platform.

  2. Installeer, licentieer en test het SQL Server ODBC-stuurprogramma op de computer waarop DG4ODBC is geïnstalleerd.

    Zie de documentatie van het SQL Server ODBC-stuurprogramma voor installatie-instructies. Raadpleeg de documentatie om te zien welke omgevingsvariabelen u moet instellen (LD_LIBRARY_PATH , LIBPATH , LD_RUN_PATH of SHLIB_PATH afhankelijk van het platform en de linker).

  3. Maak een DG4ODBC init-bestand. Bijvoorbeeld:
    cd $ORACLE_HOME/hs/admin
    cp initdg4odbc.ora initmssql.ora
  4. Zorg ervoor dat deze parameters en waarden aanwezig zijn in uw init-bestand:
    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 
    

    Vervang my_sql_server_odbc_dsn met de naam van een SQL Server ODBC-stuurprogrammagegevensbron die verbinding maakt met de doel-SQL Server-database.

  5. Voeg een item toe aan $ORACLE_HOME/network/admin/listener.ora dat maakt een SID_NAME voor DG4ODBC. Bijvoorbeeld:
    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)
       )
     )
    

    Vervang oracle_home_directory met de waarde van $ORACLE_HOME .

  6. Voeg een DG4ODBC-item toe aan $ORACLE_HOME/network/admin/tnsnames.ora die de SID_NAME specificeert die in de vorige stap is gemaakt. Bijvoorbeeld:
    MSSQL=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
       (CONNECT_DATA= (SID=mssql))
       (HS=OK)
     )
  7. Start (of herstart) de Oracle Listener:
    cd $ORACLE_HOME/bin
    ./lsnrctl stop
    ./lsnrctl start
  8. Maak verbinding met uw Oracle-database in SQL*Plus.
  9. Maak in SQL*Plus een databasekoppeling voor de doel-SQL Server-database. Bijvoorbeeld:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

    Vervang dbuser en dbwachtwoord met een geldige gebruikersnaam en wachtwoord voor de doel-SQL Server-database.

Opmerkingen
  • De Oracle 21c-versie van DG4ODBC gebruikt niet langer SQLDriverConnect om verbinding te maken met een ODBC-gegevensbron. Het gebruikt SQLConnect in plaats daarvan, die geen ondersteuning biedt voor HS_NLS_NCHAR = UCS2 . Evenzo werken DSN-loze verbindingen niet met SQLConnect .
  • Als uw gekoppelde tabel een kolom met de naam ROWID bevat, mislukt uw zoekopdracht met de fout:
    ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

    Om dit te omzeilen, wijzigt u de naam van de kolom van ROWID in ROWNUM.


  1. MariaDB JSON_CONTAINS_PATH() uitgelegd

  2. PostgreSQL - stel een standaard celwaarde in volgens een andere celwaarde

  3. Verbinding maken met Oracle Database met Sql Server Integration Services

  4. Hoe een binaire afbeelding uit de database op te halen met C# in ASP.NET