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

Opret og konfigurer Oracle Linked Server i SQL Server

Denne artikel forklarer trin-for-trin processen med at oprette og konfigurere en forbundet server mellem Oracle 19c og SQL Server 2019.

Forudsætninger for at oprette en linket server

Til demonstration har jeg installeret SQL Server 2019 på min arbejdsstation. Sammen med det installerede jeg Oracle 19c og oprettede en instans ved navn EMPLOYEE . I mine yderligere artikler vil jeg også forklare den trinvise installation og konfiguration af Oracle 19c.

For at konfigurere den linkede server skal vi først oprette en database i Oracle og derefter oprette en bruger i Oracle DB. Kommandoen CREATE USER vil gøre det. Søgeordet GRANT sikrer forbindelsen , ressource , og ubegrænset tablespace privilegier til brugeren. Du kan henvise til denne artikel for flere detaljer om CREATE USER nøgleordet.

Åbn SQL Plus og få det forbundet med Oracle ved hjælp af følgende kommando:

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 21 17:40:15 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Enter user-name: sys as sysdba

Kommandoen beder om adgangskoden. Hold den tom, og tryk på Enter .

Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Enter user-name: sys as sysdba
Enter password:
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

Nu er vi forbundet til Oracle-instansen med succes. Kør følgende forespørgsel for at oprette en bruger ved navn nisarg :

SQL> create user nisarg identified by "[email protected]";
User-created. 

Den næste forespørgsel giver den relevante tilladelse til nisarg bruger:

SQL> grant connect,resource, unlimited tablespace to nisarg;
Grant succeeded.

Opret en tabel i medarbejderdatabasen

Vi opretter tre tabeller:tblemployee , tbl-afdeling , og tblDesignation . Fremmednøglen er på medarbejderen bord. De fremmede nøglekolonner er employee_dept_id og employee_designation_id . De henviser til tblDepartment og tblDesignation tabeller. Scripts til at oprette tabellerne er nedenfor.

Opretter medarbejderen tabel:

CREATE TABLE NISARG."tblEmployee" (
  ID                        NUMBER(10, 0) GENERATED ALWAYS AS IDENTITY (
  MAXVALUE 1000000000000000000000000000),
  "Employee_name"           NVARCHAR2(50),
  "Employee_dept_id"        INTEGER,
  "Address"                 NVARCHAR2(1000),
  "ContactNumber"           NVARCHAR2(50),
  "Employee_designation_id" INTEGER,
  CONSTRAINT FK_TBLEMPLOYEE_EMPLOYEE_DEPT_ID FOREIGN KEY ("Employee_dept_id")
  REFERENCES NISARG."tblDepartment" ("Dept_ID"),
  CONSTRAINT FK_TBLEMPLOYEE_EMPLOYEE_DESIGN FOREIGN KEY ("Employee_designation_id")
  REFERENCES NISARG."tblDesignation" ("Designation_ID")
)
TABLESPACE USERS;

Opret tbl-afdelingen tabel:

CREATE TABLE NISARG."tblDepartment" (
  "Dept_ID"   INTEGER GENERATED ALWAYS AS IDENTITY (
  MAXVALUE 1000000000000000000000000000),
  "Dept_name" NVARCHAR2(50)
)
TABLESPACE USERS;

Opret tblDesignation tabel:

CREATE TABLE NISARG."tblDesignation" (
  "Designation_ID"   NUMBER(10, 0) GENERATED ALWAYS AS IDENTITY (
  MAXVALUE 1000000000000000000000000000),
  "Designation_Name" NVARCHAR2(50)
)
TABLESPACE USERS;

Her kan du se ER-diagrammet:

Lad os nu oprette den linkede server.

Opret den sammenkædede server ved hjælp af SSMS

Når vi installerer Oracle 19c, klient eller server, en udbyder ved navn OraOLEDB.Oracle vil blive oprettet. Disse udbydere sikrer kommunikation mellem SQL Server og andre datakilder eller databaser.

Efter installation af Oracle kan du se, at OLEDB-udbyderen er blevet oprettet under Udbydere node af SQL Server Management Studio.

Før vi opretter en ny linket server, skal vi aktivere A langsom igangværende parameter.

Højreklik på OraOLEDB.Oracle og klik på Egenskaber :

Udbyderindstillinger skærm, skal du klikke på Tillad igangværende . Klik på OK for at gemme konfiguration:

For at oprette en linket server skal du åbne SSMS og oprette forbindelse til databasemotoren. Udvid Serverobjekter> Sammenkædede servere> Ny sammenkædet server :

Angiv følgende detaljer i konfigurationsvinduet:

  1. Linket server . Angiv navnet på den sammenkædede server. Dette navn må ikke indeholde mellemrum eller andre tegn . I vores tilfælde er navnet på den linkede server ORACLESERVER .
  2. Servertype . Du kan vælge SQL Server eller andre datakilder. I vores tilfælde opretter vi en forbundet server mellem Oracle og SQL Server. Vælg derfor Andre data kilde .
  3. Udbyder . Vælg navnet fra Udbyderen Drop down menu. I vores tilfælde er det Oracle Udbyder til OLEDB .
  4. Datakilde . Datakildenavnet er tjenestenavnet på Oracle-forekomsten . I vores tilfælde er det medarbejder .

Du kan se listen over tjenester under Servicenavngivning af Oracle Net Configuration manager> Tjenestenavngivning> vælg tjenestens navn.

Lad os nu konfigurere sikkerhedsindstillingerne til at oprette forbindelse til Oracle-databaseserveren:i New Linked Server vinduet, skal du gå til Sikkerhed afsnit.

Vi etablerer forbindelsen ved hjælp af fjernlogin og adgangskode. Til det skal du vælge Bliv lavet med denne sikkerhedskontekst og angiv legitimationsoplysningerne:

For at udføre eksterne lagrede procedurer skal vi aktivere RPC (remote procedure call) på den linkede server.

Gå til Serverindstillinger og indstil RPC værdi som True :

Klik nu på OK at oprette en forbundet server. Når det er gjort med succes, kan du se det under LinkedIn-servere node i SSMS:

Opret en sammenkædet server ved hjælp af T-SQL

Du kan udføre T-SQL-scriptet for at oprette en forbundet server. Derefter, for at tilføje en linket server, kan du bruge sp_addlinkedserveren gemt procedure. For at konfigurere login for den linkede server kan du bruge sp_addlinkedsrvlogin gemt procedure. For at indstille konfigurationsparametrene kan du bruge sp_serveroption gemt procedure.

I vores tilfælde skal du udføre følgende kode for at tilføje den linkede server:

USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'ORACLESERVER', 
@srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'employee'

Udfør følgende kode for at konfigurere den tilknyttede serversikkerhed:

USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ORACLESERVER',
@useself=N'False',@locallogin=NULL,@rmtuser=N'nisarg',@rmtpassword='########'

Følgende kode er til indstilling af konfigurationsparametre:

EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ORACLESERVER', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

Lad os nu teste konfigurationen ved at forespørge dataene.

Test forbindelsen ved at forespørge på dataene

For at teste forbindelsen skal du starte SQL Server Management Studio og udføre følgende forespørgsel:

select * from [oracleserver]..NISARG.tblEmployee

Forespørgselsoutput:

Som du kan se, er forespørgslen blevet udført med succes. Det angiver den vellykkede konfiguration af den sammenkædede server.

Lad os nu oprette en lagret procedure i SQL Server for at få adgang til dataene fra Oracle-databasen og køre Oracle SQL-forespørgsler:

create procedure sp_view_employee
as
begin
select * from [oracleserver]..NISARG.tblEmployee
end

Kør nedenstående kommando for at udføre den lagrede procedure:

Exec sp_view_employee

Forespørgselsoutput:

Lad os udføre den parametrerede lagrede procedure. Koden er følgende:

create procedure sp_view_employee_name
@employeeName varchar(50)
as
begin
select * from [oracleserver]..NISARG.tblEmployee where [email protected]
end

Kør proceduren:

exec sp_view_employee 'Nisarg Upadhyay'

Forespørgselsoutput:

Oversigt

På denne måde kan du konfigurere den linkede server i Oracle vs SQL Server 2019. Vi har beskrevet processen trin-for-trin, og vi håber, at denne artikel vil hjælpe dig i dit arbejde.

Læs også

Faldgruber ved brug af linket server


  1. At bruge if(isset($_POST['submit'])) til ikke at vise ekko, når scriptet er åbent, virker ikke

  2. Lagring af UTF-16/Unicode-data i SQL Server

  3. Sådan udføres en procedure inde i en pakke i Oracle

  4. Provisionering af MySQL/MariaDB Vault Database Secrets Engine med Terraform