sql >> Database >  >> RDS >> Oracle

Oracle Linked Server maken en configureren in SQL Server

In dit artikel wordt het stapsgewijze proces uitgelegd voor het maken en configureren van een gekoppelde server tussen Oracle 19c en SQL Server 2019.

Vereisten om een ​​gekoppelde server te maken

Ter demonstratie heb ik SQL Server 2019 op mijn werkstation geïnstalleerd. Daarnaast heb ik Oracle 19c geïnstalleerd en een instantie gemaakt met de naam EMPLOYEE . In mijn verdere artikelen zal ik ook het stapsgewijze installatie- en configuratieproces van Oracle 19c uitleggen.

Om de gekoppelde server te configureren, moeten we eerst een database maken in Oracle en vervolgens een gebruiker maken in de Oracle DB. Het CREATE USER commando zal het doen. Het GRANT-zoekwoord zorgt voor de verbinden , bron , en onbeperkte tabelruimte rechten aan de gebruiker. U kunt dit artikel raadplegen voor meer informatie over het trefwoord CREATE USER.

Open SQL Plus en verbind het door Oracle met het volgende commando:

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

De opdracht vraagt ​​om het wachtwoord. Houd het leeg en druk op 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 zijn we succesvol verbonden met de Oracle-instantie. Voer de volgende query uit om een ​​gebruiker te maken met de naam nisarg :

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

De volgende vraag verleent de juiste toestemming aan de nisarg gebruiker:

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

Maak een tabel in de werknemersdatabase

We maken drie tabellen:tblemployee , tblDepartment , en tblDesignation . De externe sleutel bevindt zich op de tblemployee tafel. De kolommen met vreemde sleutels zijn employee_dept_id en employee_designation_id . Ze verwijzen naar tblDepartment en tblDesignation tafels. Scripts om de tabellen te maken staan ​​hieronder.

Creëert de tblemployee tafel:

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;

Maak de tblDepartment tafel:

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

Maak de tblDesignation tafel:

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

Hier kunt u het ER-diagram zien:

Laten we nu de gekoppelde server maken.

Maak de gekoppelde server met SSMS

Wanneer we Oracle 19c, client of server installeren, een provider genaamd OraOLEDB.Oracle zal gemaakt worden. Deze providers zorgen voor de communicatie tussen de SQL Server en andere gegevensbronnen of databases.

Nadat u Oracle hebt geïnstalleerd, kunt u zien dat de OLEDB-provider is gemaakt onder de Providers knooppunt van SQL Server Management Studio.

Voordat we een nieuwe gekoppelde server maken, moeten we de A . inschakelen low inprocess parameter.

Klik met de rechtermuisknop op OraOLEDB.Oracle en klik op Eigenschappen :

Op de Provideropties scherm, klik op Inprocess toestaan . Klik op OK om configuratie op te slaan:

Om een ​​gekoppelde server te maken, opent u SSMS en maakt u verbinding met de database-engine. Vouw Serverobjecten> Gekoppelde servers> Nieuwe gekoppelde server uit :

Geef in het configuratievenster de volgende details op:

  1. Gelinkte server . Geef de naam van de gekoppelde server op. Deze naam mag geen spatie of andere tekens bevatten . In ons geval is de naam van de gekoppelde server ORACLESERVER .
  2. Servertype . U kunt SQL Server of andere gegevensbronnen kiezen. In ons geval creëren we een gekoppelde server tussen Oracle en SQL Server. Kies daarom Andere gegevens bron .
  3. Aanbieder . Selecteer de naam van de Provider drop-down menu. In ons geval is dat Oracle Provider voor OLEDB .
  4. Gegevensbron . De naam van de gegevensbron is de servicenaam van de Oracle-instantie . In ons geval is dat werknemer .

U kunt de lijst met services bekijken onder Servicenaamgeving van de Oracle Net-configuratie manager> Servicenaamgeving> selecteer de servicenaam.

Laten we nu de beveiligingsinstellingen configureren om verbinding te maken met de Oracle-databaseserver:in de Nieuwe gekoppelde server venster, ga naar de Beveiliging sectie.

We brengen de verbinding tot stand met behulp van de Remote login en wachtwoord. Selecteer daarvoor de Maak gebruik van deze beveiligingscontext optie en specificeer de inloggegevens:

Om op afstand opgeslagen procedures uit te voeren, moeten we RPC (remote procedure call) inschakelen op de gekoppelde server.

Ga naar de Serveropties sectie en stel de RPC . in waarde als Waar :

Klik nu op OK om een ​​gekoppelde server te maken. Zodra het met succes is gedaan, kunt u het bekijken onder de LinkedIn-servers knooppunt in SSMS:

Maak een gekoppelde server met T-SQL

U kunt het T-SQL-script uitvoeren om een ​​gekoppelde server te maken. Om vervolgens een gekoppelde server toe te voegen, kunt u de sp_addlinkedserver . gebruiken opgeslagen procedure. Om de login voor de gekoppelde server te configureren, kunt u de sp_addlinkedsrvlogin gebruiken opgeslagen procedure. Om de configuratieparameters in te stellen, kunt u de sp_serveroptie . gebruiken opgeslagen procedure.

In ons geval moet u de volgende code uitvoeren om de gekoppelde server toe te voegen:

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

Voer de volgende code uit om de beveiliging van de gekoppelde server te configureren:

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

De volgende code is voor het instellen van de configuratieparameters:

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

Laten we nu de configuratie testen door de gegevens op te vragen.

Test de connectiviteit door de gegevens op te vragen

Om de connectiviteit te testen, start u SQL Server Management Studio en voert u de volgende query uit:

select * from [oracleserver]..NISARG.tblEmployee

De uitvoer van de zoekopdracht:

Zoals u kunt zien, is de query met succes uitgevoerd. Het geeft de succesvolle configuratie van de gekoppelde server aan.

Laten we nu een opgeslagen procedure in SQL Server maken om toegang te krijgen tot de gegevens uit de Oracle-database en Oracle SQL-query's uit te voeren:

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

Voer de onderstaande opdracht uit om de opgeslagen procedure uit te voeren:

Exec sp_view_employee

De uitvoer van de zoekopdracht:

Laten we de geparametriseerde opgeslagen procedure uitvoeren. De code is als volgt:

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

Voer de procedure uit:

exec sp_view_employee 'Nisarg Upadhyay'

De uitvoer van de zoekopdracht:

Samenvatting

Op deze manier kunt u de Linked server configureren in Oracle vs SQL Server 2019. We hebben het proces stap voor stap beschreven en we hopen dat dit artikel u zal helpen bij uw werk.

Lees ook

Valkuilen van het gebruik van gekoppelde servers


  1. MySQL mislukt op:mysql ERROR 1524 (HY000):Plugin 'auth_socket' is niet geladen

  2. 5 manieren om te controleren of een tabel bestaat in MySQL

  3. Waarom kan alleen een superuser EXTENSION CREREN wel opslaan, maar niet op Heroku?

  4. Rijen herhalen op basis van kolomwaarde in elke rij