Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criar e configurar o Oracle Linked Server no SQL Server


Este artigo explica o processo passo a passo de criação e configuração de um servidor vinculado entre o Oracle 19c e o SQL Server 2019.

Pré-requisitos para criar um servidor vinculado


Para demonstração, instalei o SQL Server 2019 na minha estação de trabalho. Junto com ele, instalei o Oracle 19c e criei uma instância chamada EMPLOYEE . Em meus próximos artigos, também explicarei o processo de instalação e configuração passo a passo do Oracle 19c.

Para configurar o servidor vinculado, devemos primeiro criar um banco de dados no Oracle e depois criar um usuário no banco de dados Oracle. O comando CREATE USER fará isso. A palavra-chave GRANT garante a conexão , recurso e espaço de tabela ilimitado privilégios ao usuário. Você pode consultar este artigo para obter mais detalhes sobre a palavra-chave CREATE USER.

Abra o SQL Plus e conecte-o pelo Oracle usando o seguinte 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

O comando solicita a senha. Mantenha-o vazio e pressione 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

Agora, estamos conectados à instância Oracle com sucesso. Execute a seguinte consulta para criar um usuário chamado nisarg :
SQL> create user nisarg identified by "[email protected]";
User-created. 

A próxima consulta concede a permissão apropriada ao nisarg do utilizador:
SQL> grant connect,resource, unlimited tablespace to nisarg;
Grant succeeded.

Criar uma tabela no banco de dados Employee


Estamos criando três tabelas:tblemployee , tblDepartamento e tblDesignation . A chave estrangeira está no tblemployee tabela. As colunas de chave estrangeira são employee_dept_id e employee_designation_id . Eles fazem referência a tblDepartment e tblDesignation mesas. Os scripts para criar as tabelas estão abaixo.

Cria o tblemployee tabela:
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;

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

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

Aqui você pode ver o diagrama ER:

Agora, vamos criar o servidor vinculado.

Crie o servidor vinculado usando o SSMS


Quando instalamos o Oracle 19c, cliente ou servidor, um provedor chamado OraOLEDB.Oracle Será criado. Esses provedores garantem a comunicação entre o SQL Server e outras fontes de dados ou bancos de dados.

Depois de instalar o Oracle, você pode ver que o Provedor OLEDB foi criado sob os Provedores nó do SQL Server Management Studio.

Antes de criarmos um novo servidor vinculado, devemos habilitar o A permitir processo parâmetro.

Clique com o botão direito do mouse em OraOLEDB.Oracle e clique em Propriedades :

Nas Opções do provedor tela, clique em Permitir inprocess . Clique em OK para salvar a configuração:

Para criar um servidor vinculado, abra o SSMS e conecte-se ao mecanismo de banco de dados. Expanda Objetos de Servidor> Servidores Vinculados> Novo Servidor Vinculado :

Na janela de configuração, especifique os seguintes detalhes:
  1. Servidor vinculado . Especifique o nome do servidor vinculado. Este nome não deve conter espaço ou outros caracteres . No nosso caso, o nome do servidor vinculado é ORACLESERVER .
  2. Tipo de servidor . Você pode escolher o SQL Server ou outras fontes de dados. No nosso caso, estamos criando um servidor vinculado entre Oracle e SQL Server. Portanto, escolha Outros dados fonte .
  3. Provedor . Selecione o nome do Provedor menu suspenso. No nosso caso, é a Oracle Provedor de OLEDB .
  4. Fonte de dados . O nome da fonte de dados é o nome do serviço da instância Oracle . No nosso caso, é funcionário .

Você pode ver a lista de serviços em Nomeação de serviço da Configuração do Oracle Net gerente> Nomeação do serviço> selecione o nome do serviço.

Agora, vamos definir as configurações de segurança para conectar ao servidor de banco de dados Oracle:no Novo Servidor Vinculado janela, vá para Segurança seção.

Estabelecemos a conexão usando o Login remoto e senha. Para isso, selecione Ser feito usando este contexto de segurança opção e especifique as credenciais:

Para executar procedimentos armazenados remotos, devemos habilitar RPC (chamada de procedimento remoto) no servidor vinculado.

Vá para as Opções do servidor seção e defina o RPC valor como Verdadeiro :

Agora, clique em OK para criar um servidor vinculado. Uma vez feito com sucesso, você pode visualizá-lo em Servidores LinkedIn nó no SSMS:

Criar um servidor vinculado usando T-SQL


Você pode executar o script T-SQL para criar um servidor vinculado. Então, para adicionar um servidor vinculado, você pode usar o sp_addlinkedserver procedimento armazenado. Para configurar o login para o servidor vinculado, você pode usar o sp_addlinkedsrvlogin procedimento armazenado. Para definir os parâmetros de configuração, você pode usar a sp_serveroption procedimento armazenado.

No nosso caso, você deve executar o seguinte código para adicionar o servidor vinculado:
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'ORACLESERVER', 
@srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'employee'

Execute o seguinte código para configurar a segurança do servidor vinculado:
USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ORACLESERVER',
@useself=N'False',@locallogin=NULL,@rmtuser=N'nisarg',@rmtpassword='########'

O código a seguir é para definir os parâmetros de configuração:
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

Agora, vamos testar a configuração consultando os dados.

Teste a conectividade consultando os dados


Para testar a conectividade, inicie o SQL Server Management Studio e execute a seguinte consulta:
select * from [oracleserver]..NISARG.tblEmployee

A saída da consulta:

Como você pode ver, a consulta foi executada com sucesso. Indica a configuração bem-sucedida do servidor vinculado.

Agora, vamos criar um procedimento armazenado no SQL Server para acessar os dados do banco de dados Oracle e executar consultas Oracle SQL:
create procedure sp_view_employee
as
begin
select * from [oracleserver]..NISARG.tblEmployee
end

Execute o comando abaixo para executar o procedimento armazenado:
Exec sp_view_employee

A saída da consulta:

Vamos executar o procedimento armazenado parametrizado. O código está a seguir:
create procedure sp_view_employee_name
@employeeName varchar(50)
as
begin
select * from [oracleserver]..NISARG.tblEmployee where [email protected]
end

Execute o procedimento:
exec sp_view_employee 'Nisarg Upadhyay'

A saída da consulta:

Resumo


Dessa forma, você pode configurar o servidor vinculado no Oracle vs SQL Server 2019. Descrevemos o processo passo a passo e esperamos que este artigo o ajude em seu trabalho.

Leia também


Armadilhas do uso do servidor vinculado