sql >> Databasteknik >  >> RDS >> Oracle

Hur ställer man in en länkad server till en Oracle-databas på SQL 2000/2005?

Jag kunde konfigurera en länkad server till en fjärrbaserad Oracle-databas, vilket slutade med en process i flera steg:

  1. Installera Oracle ODBC-drivrutiner på SQL Server.
  2. Skapa system-DSN till Oracle-databas på SQL Server.
  3. Skapa länkad server på SQL-servern med system-DSN.

Steg 1:Installera Oracle ODBC-drivrutiner på servern

a. Ladda ner de nödvändiga Oracle Instant Client-paketen:Basic, ODBC och SQL*Plus (valfritt)

b. Packa upp paketen till en lokal katalog på SQL-servern, vanligtvis C:\Oracle . Detta bör resultera i en [katalog] som C:\Oracle\instantclient_10_2 , vilket kommer att vara värdet på [katalog] som refereras till i resten av det här svaret.

c. Skapa en textfil med namnet tnsnames.ora inom direktklienten [katalog] som innehåller följande:

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

Obs:Faktisk HOST , PORT och SERVICE_NAME kommer att variera beroende på Oracle-server som du upprättar en anslutning till. Denna information kan ofta hittas med hjälp av Oracles nätverksklientverktyg under lyssnare .

OracleTnsName kan vara vilket namn som helst som du vill tilldela Oracle-datakällan och kommer att användas när du ställer in systemets DSN. Du kan också använda syntaxen ovan för att definiera flera TNS-namn i samma tnsnames.ora-fil om så önskas.

d. Lägg till [katalogen] i systemet PATH miljövariabel.

e. Skapa en ny systemmiljövariabel med namnet TNS_Admin som har värdet [katalog]

f. Kör [katalog]\odbc_install.exe verktyg för att installera Oracle ODBC-drivrutiner.

g. Det rekommenderas att du startar om SQL-servern, men det kanske inte är nödvändigt. Du kanske också vill ge säkerhetsbehörigheter till den här katalogen för SQL-serverns och SQL-agentens användaridentiteter.

Steg 2:Skapa en system-DNS som använder Oracle ODBC-drivrutinen

a. Öppna ODBC Data Source Administrator verktyg. [ Administrativa verktyg --> Datakällor (ODBC) ]

b. Välj fliken System DSN och välj sedan knappen Lägg till.

c. I drivrutinslistan väljer du Oracle i instantclient {version} . (t.ex. 'Oracle i instantclient 10_2') och välj sedan knappen Slutför.

d. Ange följande:

  • Datakällans namn :{System DSN Name}
  • Beskrivning :{lämna tomt/tom
  • TNS-tjänstens namn :bör ha OracleTnsName du definierade i tnsnames.ora listan, välj den som värde.
  • Användar-ID :{Oracle användarnamn}

e. Välj knappen Testa anslutning. Du bör uppmanas att ange {Oracle-användarlösenordet}. Om allt går bra kommer testet att lyckas.

Steg 3:Skapa länkad server i SQL till Oracle-databasen

Öppna ett frågefönster i SQL-servern och kör följande:

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}'

Obs:{Linked Server Name} kan vara vad som helst du vill använda när du refererar till Oracle-servern, men {System DNS Name} måste matcha namnet på systemets DSN du skapade tidigare.

{Oracle User Name} ska vara samma som användar-ID som används av systemets DSN och {Oracle User Password bör vara samma som du använde för att framgångsrikt testa ODBC-anslutningen. Se KB 280106 för information om felsökning av Oracle-länkade serverproblem.

Fråga den länkade Oracle-servern

Du kan använda OPENQUERY för att utföra genomkopplingsfrågor på den länkade Oracle-servern, men tänk på att för mycket stora postuppsättningar kan du få en ORA-01652 felmeddelande om du anger en ORDER BY klausul i pass-through-frågan. Flyttar ORDER BY klausulen från pass-through-frågan till den yttre select-satsen löste det här problemet för mig.




  1. Hur COLLATION() fungerar i MariaDB

  2. Skickar parametrar till en JDBC PreparedStatement

  3. Hur exporterar man tabell som CSV med rubriker på Postgresql?

  4. SQL Server-väntehändelser -2