sql >> Database teknologi >  >> RDS >> Oracle

Hvordan opsætter man en linket server til en Oracle-database på SQL 2000/2005?

Jeg var i stand til at konfigurere en linket server til en ekstern Oracle-database, hvilket endte med at blive en proces i flere trin:

  1. Installer Oracle ODBC-drivere på SQL Server.
  2. Opret system-DSN til Oracle-database på SQL Server.
  3. Opret linket server på SQL-server ved hjælp af System DSN.

Trin 1:Installer Oracle ODBC-drivere på serveren

en. Download de nødvendige Oracle Instant Client-pakker:Basic, ODBC og SQL*Plus (valgfrit)

b. Udpak pakkerne til en lokal mappe på SQL-serveren, typisk C:\Oracle . Dette skulle resultere i en [mappe] som C:\Oracle\instantclient_10_2 , som vil være værdien af ​​[mappe], der henvises til i resten af ​​dette svar.

c. Opret en tekstfil med navnet tnsnames.ora i den øjeblikkelige klient [mappe], der indeholder følgende:

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

Bemærk:Faktisk HOST , PORT og SERVICE_NAME vil variere afhængigt af den Oracle-server, du opretter forbindelse til. Disse oplysninger kan ofte findes ved hjælp af Oracle-netværksklientværktøjerne under lyttere .

OracleTnsName kan være et hvilket som helst navn, du ønsker at tildele Oracle-datakilden, og vil blive brugt ved opsætning af systemets DSN. Du kan også bruge syntaksen ovenfor til at definere flere TNS-navne i den samme tnsnames.ora-fil, hvis det ønskes.

d. Tilføj [mappen] til systemet PATH miljøvariabel.

e. Opret en ny systemmiljøvariabel ved navn TNS_Admin der har en værdi på [mappe]

f. Udfør [mappe]\odbc_install.exe værktøj til at installere Oracle ODBC-driverne.

g. Det anbefales, at du genstarter SQL-serveren, men det er muligvis ikke nødvendigt. Det kan også være en god idé at give sikkerhedstilladelser til denne mappe for SQL-serveren og SQL-agentens brugeridentiteter.

Trin 2:Opret en system-DNS, der bruger Oracle ODBC-driveren

en. Åbn ODBC Data Source Administrator værktøj. [ Administrative værktøjer --> Datakilder (ODBC) ]

b. Vælg fanen System DSN, og vælg derefter knappen Tilføj.

c. Vælg Oracle i instantclient {version} på driverlisten . (f.eks. 'Oracle i instantclient 10_2'), og vælg derefter knappen Udfør.

d. Angiv følgende:

  • Datakildenavn :{System DSN-navn
  • Beskrivelse :{lad tomt/tom
  • TNS-tjenestenavn :skal have OracleTnsName du definerede i tnsnames.ora fil på listen, vælg den som værdi.
  • Bruger-id :{Oracle-brugernavn

e. Vælg knappen Test forbindelse. Du skal blive bedt om at angive {Oracle-brugeradgangskoden}. Hvis alt går vel, vil testen lykkes.

Trin 3:Opret linket server i SQL til Oracle-databasen

Åbn et forespørgselsvindue i SQL-serveren, og udfør følgende:

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

Bemærk:{Linked Server Name} kan være alt, hvad du vil bruge, når du refererer til Oracle-serveren, men {System DNS Name} skal matche navnet på det system-DSN, du tidligere oprettede.

{Oracle-brugernavn skal være det samme som det bruger-id, der bruges af systemets DSN, og {Oracle User Password skal være den samme, som du brugte til at teste ODBC-forbindelsen. Se KB 280106 for oplysninger om fejlfinding af Oracle-forbundne serverproblemer.

Forespørgsel på den Oracle-linkede server

Du kan bruge OPENQUERY til at udføre pass-through-forespørgsler på den Oracle-linkede server, men vær opmærksom på, at for meget store postsæt kan du modtage en ORA-01652 fejlmeddelelse, hvis du angiver en ORDER BY klausul i pass-through-forespørgslen. Flytning af ORDER BY klausul fra pass-through-forespørgslen til den ydre select-sætning løste dette problem for mig.




  1. Halloween-problemet – del 2

  2. Implementer SQL Server AlwaysOn Availability Groups på Linux

  3. Generer tilfældige heltal uden kollisioner

  4. Ligheder og forskelle mellem funktionerne RANK, DENSE_RANK og ROW_NUMBER