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:
- 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 .
- 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 .
- Provedor . Selecione o nome do Provedor menu suspenso. No nosso caso, é a Oracle Provedor de OLEDB .
- 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