sql >> Databasteknik >  >> RDS >> Oracle

Skapa och konfigurera Oracle Linked Server i SQL Server

Den här artikeln förklarar steg-för-steg-processen för att skapa och konfigurera en länkad server mellan Oracle 19c och SQL Server 2019.

Förutsättningar för att skapa en länkad server

För demonstration har jag installerat SQL Server 2019 på min arbetsstation. Tillsammans med det installerade jag Oracle 19c och skapade en instans som heter EMPLOYEE . I mina ytterligare artiklar kommer jag att förklara steg-för-steg installation och konfiguration av Oracle 19c också.

För att konfigurera den länkade servern måste vi först skapa en databas i Oracle och sedan skapa en användare i Oracle DB. Kommandot CREATE USER kommer att göra det. Nyckelordet GRANT säkerställer anslutningen , resurs och obegränsat tabellutrymme privilegier till användaren. Du kan läsa den här artikeln för mer information om nyckelordet CREATE USER.

Öppna SQL Plus och anslut det av Oracle med följande 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

Kommandot frågar efter lösenordet. Håll den tom och tryck på Retur .

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 är vi anslutna till Oracle-instansen. Kör följande fråga för att skapa en användare som heter nisarg :

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

Nästa fråga ger lämplig behörighet till nisarg användare:

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

Skapa en tabell i medarbetardatabasen

Vi skapar tre tabeller:tblemployee , tblDepartment och tblDesignation . Den främmande nyckeln finns på anställda tabell. Kolumnerna för främmande nyckel är employee_dept_id och employee_designation_id . De hänvisar till tblDepartment och tblDesignation tabeller. Skript för att skapa tabellerna finns nedan.

Skapar tblemployee tabell:

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;

Skapa tblDepartment tabell:

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

Skapa tblDesignation tabell:

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

Här kan du se ER-diagrammet:

Låt oss nu skapa den länkade servern.

Skapa den länkade servern med SSMS

När vi installerar Oracle 19c, klient eller server, en leverantör som heter OraOLEDB.Oracle kommer att skapas. Dessa leverantörer säkerställer kommunikation mellan SQL Server och andra datakällor eller databaser.

När du har installerat Oracle kan du se att OLEDB-leverantören har skapats under Providers nod för SQL Server Management Studio.

Innan vi skapar en ny länkad server måste vi aktivera A låg pågående parameter.

Högerklicka på OraOLEDB.Oracle och klicka på Egenskaper :

leverantörsalternativ klickar du på Tillåt inprocess . Klicka på OK för att spara konfiguration:

För att skapa en länkad server, öppna SSMS och anslut till databasmotorn. Expandera Serverobjekt> Länkade servrar> Ny länkad server :

Ange följande detaljer i konfigurationsfönstret:

  1. Länkad server . Ange namnet på den länkade servern. Detta namn får inte innehålla mellanslag eller andra tecken . I vårt fall är namnet på den länkade servern ORACLESERVER .
  2. Servertyp . Du kan välja SQL Server eller andra datakällor. I vårt fall skapar vi en länkad server mellan Oracle och SQL Server. Välj därför Övriga data källa .
  3. Leverantör . Välj namnet från leverantören rullgardinsmenyn. I vårt fall är det Oracle Provider för OLEDB .
  4. Datakälla . Datakällans namn är tjänstnamnet för Oracle-instansen . I vårt fall är det anställd .

Du kan se listan över tjänster under Tjänstnamn i Oracle Net Configuration manager> Tjänstnamn> välj tjänstens namn.

Låt oss nu konfigurera säkerhetsinställningarna för att ansluta till Oracles databasserver:i Ny länkad server fönstret, gå till Säkerhet avsnitt.

Vi upprättar anslutningen med Fjärrinloggning och lösenord. För det väljer du Gjorda med hjälp av denna säkerhetskontext alternativet och ange autentiseringsuppgifterna:

För att köra fjärrlagrade procedurer måste vi aktivera RPC (remote procedure call) i den länkade servern.

Gå till Serveralternativ och ställ in RPC värde som True :

Klicka nu på OK för att skapa en länkad server. När det väl är gjort kan du se det under LinkedIn-servrarna nod i SSMS:

Skapa en länkad server med T-SQL

Du kan köra T-SQL-skriptet för att skapa en länkad server. Sedan, för att lägga till en länkad server, kan du använda sp_addlinkedservern lagrad procedur. För att konfigurera inloggningen för den länkade servern kan du använda sp_addlinkedsrvlogin lagrad procedur. För att ställa in konfigurationsparametrarna kan du använda sp_serveroption lagrad procedur.

I vårt fall bör du köra följande kod för att lägga till den länkade servern:

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

Kör följande kod för att konfigurera den länkade serversäkerheten:

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

Följande kod är för att ställa in konfigurationsparametrarna:

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

Låt oss nu testa konfigurationen genom att fråga efter data.

Testa anslutningen genom att fråga efter data

För att testa anslutning, starta SQL Server Management Studio och kör följande fråga:

select * from [oracleserver]..NISARG.tblEmployee

Frågeutdata:

Som du kan se har frågan utförts framgångsrikt. Det indikerar framgångsrik konfiguration av den länkade servern.

Låt oss nu skapa en lagrad procedur i SQL Server för att komma åt data från Oracle-databasen och köra Oracle SQL-frågor:

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

Kör kommandot nedan för att utföra den lagrade proceduren:

Exec sp_view_employee

Frågeutdata:

Låt oss utföra den parametrerade lagrade proceduren. Koden är följande:

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'

Frågeutdata:

Sammanfattning

På så sätt kan du konfigurera den länkade servern i Oracle vs SQL Server 2019. Vi har beskrivit processen steg-för-steg, och vi hoppas att den här artikeln kommer att hjälpa dig i ditt arbete.

Läs också

Fallgropar med länkad serveranvändning


  1. Hur man skapar ett Amazon Aurora-kluster

  2. Datagenerering och hårdvarukvalitet

  3. Lägg till en främmande nyckelrelation mellan två databaser

  4. OLTP-prestanda sedan PostgreSQL 8.3