sql >> Base de Datos >  >> RDS >> Oracle

Crear y configurar Oracle Linked Server en SQL Server

Este artículo explica paso a paso el proceso de creación y configuración de un servidor vinculado entre Oracle 19c y SQL Server 2019.

Requisitos previos para crear un servidor vinculado

Para demostración, instalé SQL Server 2019 en mi estación de trabajo. Junto con él, instalé Oracle 19c y creé una instancia llamada EMPLOYEE . En mis próximos artículos, también explicaré paso a paso el proceso de instalación y configuración de Oracle 19c.

Para configurar el servidor vinculado, primero debemos crear una base de datos en Oracle y luego crear un usuario en Oracle DB. El comando CREAR USUARIO lo hará. La palabra clave GRANT garantiza la conexión , recurso y espacio de tabla ilimitado privilegios al usuario. Puede consultar este artículo para obtener más detalles sobre la palabra clave CREATE USER.

Abra SQL Plus y conéctelo con Oracle usando el siguiente 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

El comando solicita la contraseña. Mantenlo vacío y pulsa Intro .

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

Ahora, estamos conectados a la instancia de Oracle con éxito. Ejecute la siguiente consulta para crear un usuario llamado nisarg :

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

La siguiente consulta otorga el permiso adecuado a nisarg usuario:

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

Cree una tabla en la base de datos de empleados

Estamos creando tres tablas:tblemployee , tblDepartamento y tblDesignación . La clave externa está en tblemployee mesa. Las columnas de clave externa son employee_dept_id y employee_designation_id . Hacen referencia a tblDepartment y tblDesignación mesas. Los scripts para crear las tablas se encuentran a continuación.

Crea el tblemployee tabla:

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;

Crear el tblDepartment tabla:

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

Cree la tblDesignation tabla:

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

Aquí puedes ver el diagrama ER:

Ahora, vamos a crear el servidor vinculado.

Crear el servidor vinculado mediante SSMS

Cuando instalamos Oracle 19c, cliente o servidor, un proveedor llamado OraOLEDB.Oracle se creará. Estos proveedores aseguran la comunicación entre SQL Server y otras fuentes de datos o bases de datos.

Después de instalar Oracle, puede ver que el proveedor OLEDB se ha creado en Proveedores nodo de SQL Server Management Studio.

Antes de crear un nuevo servidor vinculado, debemos habilitar el A llow inprocess parámetro.

Haga clic derecho en OraOLEDB.Oracle y haga clic en Propiedades :

En las Opciones de proveedor pantalla, haga clic en Permitir en proceso . Haz clic en Aceptar para guardar la configuración:

Para crear un servidor vinculado, abra SSMS y conéctese al motor de la base de datos. Expanda Objetos de servidor> Servidores vinculados> Nuevo servidor vinculado :

En la ventana de configuración, especifique los siguientes detalles:

  1. Servidor vinculado . Especifique el nombre del servidor vinculado. Este nombre no debe contener espacios ni otros caracteres . En nuestro caso, el nombre del servidor vinculado es ORACLESERVER .
  2. Tipo de servidor . Puede elegir SQL Server u otras fuentes de datos. En nuestro caso, estamos creando un servidor vinculado entre Oracle y SQL Server. Por lo tanto, elija Otros datos fuente .
  3. Proveedor . Seleccione el nombre del Proveedor Menú desplegable. En nuestro caso, es Oracle Provider for OLEDB .
  4. Fuente de datos . El nombre de la fuente de datos es el nombre del servicio de la instancia de Oracle . En nuestro caso, es empleado .

Puede ver la lista de servicios en Nombre de servicios de la Configuración de Oracle Net administrador> Nombre de servicio> seleccione el nombre del servicio.

Ahora, configuremos los ajustes de seguridad para conectarnos al servidor de la base de datos de Oracle:en el Nuevo servidor vinculado ventana, vaya a Seguridad sección.

Establecemos la conexión mediante el Inicio de sesión remoto y contraseña. Para eso, seleccione Hacerse usando este contexto de seguridad opción y especifique las credenciales:

Para ejecutar procedimientos almacenados remotos, debemos habilitar RPC (llamada a procedimiento remoto) en el servidor vinculado.

Vaya a las Opciones del servidor sección y establecer el RPC valor como Verdadero :

Ahora, haga clic en Aceptar para crear un servidor vinculado. Una vez que se haya hecho con éxito, puede verlo en Servidores de LinkedIn nodo en SSMS:

Cree un servidor vinculado usando T-SQL

Puede ejecutar el script T-SQL para crear un servidor vinculado. Luego, para agregar un servidor vinculado, puede usar el sp_addlinkedserver procedimiento almacenado. Para configurar el inicio de sesión para el servidor vinculado, puede utilizar el sp_addlinkedsrvlogin procedimiento almacenado. Para establecer los parámetros de configuración, puede utilizar la sp_serveroption procedimiento almacenado.

En nuestro caso, debe ejecutar el siguiente código para agregar el servidor vinculado:

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

Ejecute el siguiente código para configurar la seguridad del servidor vinculado:

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

El siguiente código es para establecer los parámetros de configuración:

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

Ahora, probemos la configuración consultando los datos.

Pruebe la conectividad consultando los datos

Para probar la conectividad, inicie SQL Server Management Studio y ejecute la siguiente consulta:

select * from [oracleserver]..NISARG.tblEmployee

El resultado de la consulta:

Como puede ver, la consulta se ha ejecutado correctamente. Indica la configuración exitosa del servidor vinculado.

Ahora, vamos a crear un procedimiento almacenado en SQL Server para acceder a los datos de la base de datos Oracle y ejecutar consultas Oracle SQL:

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

Ejecute el siguiente comando para ejecutar el procedimiento almacenado:

Exec sp_view_employee

El resultado de la consulta:

Ejecutemos el procedimiento almacenado parametrizado. El código es el siguiente:

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

Ejecute el procedimiento:

exec sp_view_employee 'Nisarg Upadhyay'

El resultado de la consulta:

Resumen

De esta manera, puede configurar el servidor vinculado en Oracle vs SQL Server 2019. Hemos descrito el proceso paso a paso y esperamos que este artículo lo ayude en su trabajo.

Leer también

Peligros del uso del servidor vinculado