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

Crea e configura Oracle Linked Server in SQL Server

Questo articolo spiega il processo passo dopo passo di creazione e configurazione di un server collegato tra Oracle 19c e SQL Server 2019.

Prerequisiti per creare un server collegato

A scopo dimostrativo, ho installato SQL Server 2019 sulla mia workstation. Insieme ad esso, ho installato Oracle 19c e ho creato un'istanza denominata EMPLOYEE . Nei miei ulteriori articoli, spiegherò passo passo anche il processo di installazione e configurazione di Oracle 19c.

Per configurare il server collegato, dobbiamo prima creare un database in Oracle e quindi creare un utente nel DB Oracle. Il comando CREATE USER lo farà. La parola chiave GRANT garantisce la connessione , risorsa e tablespace illimitato privilegi all'utente. Puoi fare riferimento a questo articolo per maggiori dettagli sulla parola chiave CREATE USER.

Apri SQL Plus e collegalo tramite Oracle utilizzando il seguente comando:

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

Il comando richiede la password. Tienilo vuoto e premi Invio .

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

Ora siamo connessi correttamente all'istanza Oracle. Eseguire la query seguente per creare un utente denominato nisarg :

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

La query successiva concede l'autorizzazione appropriata al nisarg utente:

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

Crea una tabella nel database dei dipendenti

Stiamo creando tre tabelle:tblemployee , tblDepartment e tblDesignation . La chiave esterna si trova su tblemployee tavolo. Le colonne della chiave esterna sono employee_dept_id e employee_designation_id . Si riferiscono a tblDepartment e tblDesignation tavoli. Di seguito sono riportati gli script per creare le tabelle.

Crea il tblemployee tabella:

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;

Crea il tblDepartment tabella:

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

Crea la tblDesignation tabella:

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

Qui puoi vedere il diagramma ER:

Ora creiamo il server collegato.

Crea il server collegato utilizzando SSMS

Quando installiamo Oracle 19c, client o server, un provider denominato OraOLEDB.Oracle verrà creato. Questi provider garantiscono la comunicazione tra SQL Server e altre origini dati o database.

Dopo aver installato Oracle, puoi vedere che il provider OLEDB è stato creato sotto i Provider nodo di SQL Server Management Studio.

Prima di creare un nuovo server collegato, dobbiamo abilitare la A in corso basso parametro.

Fare clic con il pulsante destro del mouse su OraOLEDB.Oracle e fai clic su Proprietà :

Nelle Opzioni del fornitore schermata, fai clic su Consenti in corso . Fare clic su OK per salvare la configurazione:

Per creare un server collegato, apri SSMS e connettiti al motore di database. Espandi Oggetti server> Server collegati> Nuovo server collegato :

Nella finestra di configurazione, specifica i seguenti dettagli:

  1. Server collegato . Specificare il nome del server collegato. Questo nome non deve contenere spazi o altri caratteri . Nel nostro caso, il nome del server collegato è ORACLESERVER .
  2. Tipo di server . È possibile scegliere SQL Server o altre origini dati. Nel nostro caso, stiamo creando un server collegato tra Oracle e SQL Server. Pertanto, scegli Altri dati fonte .
  3. Fornitore . Seleziona il nome dal Provider menu a discesa. Nel nostro caso, è Oracle Provider per OLEDB .
  4. Fonte dati . Il nome dell'origine dati è il nome del servizio dell'istanza Oracle . Nel nostro caso, è dipendente .

Puoi visualizzare l'elenco dei servizi in Denominazione dei servizi della Configurazione Oracle Net manager> Denominazione dei servizi> seleziona il nome del servizio.

Ora configuriamo le impostazioni di sicurezza per la connessione al server di database Oracle:nel Nuovo server collegato finestra, vai alla Sicurezza sezione.

Stabiliamo la connessione utilizzando il Accesso remoto e password. Per questo, seleziona Be made using this security context opzione e specificare le credenziali:

Per eseguire stored procedure remote, dobbiamo abilitare RPC (remote procedure call) nel server collegato.

Vai a Opzioni server sezione e imposta l'RPC valore come Vero :

Ora, fai clic su OK per creare un server collegato. Una volta eseguito correttamente, puoi visualizzarlo sotto i Server LinkedIn nodo in SSMS:

Crea un server collegato utilizzando T-SQL

È possibile eseguire lo script T-SQL per creare un server collegato. Quindi, per aggiungere un server collegato, puoi utilizzare sp_addlinkedserver procedura memorizzata. Per configurare l'accesso per il server collegato, puoi utilizzare sp_addlinkedsrvlogin procedura memorizzata. Per impostare i parametri di configurazione, puoi utilizzare sp_serveroption procedura memorizzata.

Nel nostro caso, dovresti eseguire il seguente codice per aggiungere il server collegato:

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

Eseguire il codice seguente per configurare la sicurezza del server collegato:

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

Il codice seguente serve per impostare i parametri di configurazione:

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

Ora, testiamo la configurazione interrogando i dati.

Verifica la connettività interrogando i dati

Per testare la connettività, avviare SQL Server Management Studio ed eseguire la query seguente:

select * from [oracleserver]..NISARG.tblEmployee

L'output della query:

Come puoi vedere, la query è stata eseguita correttamente. Indica la corretta configurazione del server collegato.

Ora creiamo una stored procedure in SQL Server per accedere ai dati dal database Oracle ed eseguire query Oracle SQL:

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

Eseguire il comando seguente per eseguire la stored procedure:

Exec sp_view_employee

L'output della query:

Eseguiamo la stored procedure parametrizzata. Il codice è il seguente:

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

Esegui la procedura:

exec sp_view_employee 'Nisarg Upadhyay'

L'output della query:

Riepilogo

In questo modo, puoi configurare il server collegato in Oracle rispetto a SQL Server 2019. Abbiamo descritto il processo passo dopo passo e speriamo che questo articolo ti aiuti nel tuo lavoro.

Leggi anche

Insidie ​​dell'utilizzo del server collegato