Тази статия обяснява стъпка по стъпка процеса на създаване и конфигуриране на свързан сървър между Oracle 19c и SQL Server 2019.

Предварителни условия за създаване на свързан сървър
За демонстрация инсталирах SQL Server 2019 на моята работна станция. Заедно с него инсталирах Oracle 19c и създадох екземпляр на име СЛУЖИТЕЛ . В по-нататъшните си статии ще обясня стъпка по стъпка процеса на инсталиране и конфигуриране на Oracle 19c.
За да конфигурираме свързания сървър, първо трябва да създадем база данни в Oracle и след това да създадем потребител в Oracle DB. Командата CREATE USER ще го направи. Ключовата дума GRANT осигурява свързването ,ресурс , и неограничено пространство за таблици привилегии на потребителя. Можете да се обърнете към тази статия за повече подробности относно ключовата дума CREATE USER.
Отворете SQL Plus и го свържете от Oracle, като използвате следната команда:
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

Командата подканва за паролата. Оставете го празно и натиснете 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

Сега сме свързани успешно с екземпляра на Oracle. Изпълнете следната заявка, за да създадете потребител с име nisarg :
SQL> create user nisarg identified by "[email protected]";
User-created.

Следващата заявка предоставя подходящото разрешение на nisarg потребител:
SQL> grant connect,resource, unlimited tablespace to nisarg;
Grant succeeded.

Създайте таблица в базата данни на служителите
Създаваме три таблици:tblemployee ,tblDepartment , и tblDesignation . Външният ключ е наtblemployee маса. Колоните за външен ключ са employee_dept_id и идентификационен_идентификатор_на_служител . Те се позовават на tblDepartment и tblDesignation маси. Скриптове за създаване на таблиците са по-долу.
Създава tblemployee таблица:
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;
Създайте tblDepartment таблица:
CREATE TABLE NISARG."tblDepartment" (
"Dept_ID" INTEGER GENERATED ALWAYS AS IDENTITY (
MAXVALUE 1000000000000000000000000000),
"Dept_name" NVARCHAR2(50)
)
TABLESPACE USERS;
Създайте tblDesignation таблица:
CREATE TABLE NISARG."tblDesignation" (
"Designation_ID" NUMBER(10, 0) GENERATED ALWAYS AS IDENTITY (
MAXVALUE 1000000000000000000000000000),
"Designation_Name" NVARCHAR2(50)
)
TABLESPACE USERS;
Тук можете да видите диаграмата на ER:

Сега нека създадем свързания сървър.
Създайте свързания сървър с помощта на SSMS
Когато инсталираме Oracle 19c, клиент или сървър, доставчик на име OraOLEDB.Oracle ще бъде създадена. Тези доставчици осигуряват комуникация между SQL Server и други източници на данни или бази данни.
След като инсталирате Oracle, можете да видите, че доставчикът на OLEDB е създаден под Доставчици възел на SQL Server Management Studio.

Преди да създадем нов свързан сървър, трябва да активираме A забавен процес параметър.
Щракнете с десния бутон върху OraOLEDB.Oracle и щракнете върху Свойства :

В Опции на доставчика екран, щракнете върху Разрешаване на процес . Щракнете върху OK за да запазите конфигурацията:

За да създадете свързан сървър, отворете SSMS и се свържете с двигателя на базата данни. Разгънете Обекти на сървъра> Свързани сървъри> Нов свързан сървър :

В прозореца за конфигурация посочете следните подробности:
- Свързан сървър . Посочете името на свързания сървър. Това име не трябва да съдържа интервал или други знаци . В нашия случай името на свързания сървър е ORACLESERVER .
- Тип сървър . Можете да изберете SQL Server или други източници на данни. В нашия случай създаваме свързан сървър между Oracle и SQL Server. Затова изберете Други данни източник .
- Доставчик . Изберете името от Доставчик падащо меню. В нашия случай това е Oracle Доставчик за OLEDB .
- Източник на данни . Името на източника на данни е името на услугата на екземпляра на Oracle . В нашия случай това е сслужител .

Можете да видите списъка с услугите под Именуване на услуги на Конфигурацията на Oracle Net мениджър> Именуване на услугата> изберете името на услугата.

Сега нека конфигурираме настройките за сигурност, за да се свържем със сървъра на базата данни на Oracle:в Нов свързан сървър прозорец, отидете на Сигурност раздел.
Ние установяваме връзката с помощта на Отдалечено влизане и парола. За това изберете Да се направи с помощта на този контекст за сигурност опция и посочете идентификационните данни:

За да изпълняваме отдалечено съхранени процедури, трябва да активираме RPC (отдалечено извикване на процедура) в свързания сървър.
Отидете на Опции на сървъра раздел и задайте RPC стойност като Вярно :

Сега щракнете върху OK за създаване на свързан сървър. След като бъде направено успешно, можете да го видите под LinkedIn сървъри възел в SSMS:

Създайте свързан сървър с помощта на T-SQL
Можете да изпълните T-SQL скрипта, за да създадете свързан сървър. След това, за да добавите свързан сървър, можете да използвате sp_addlinkedserver съхранена процедура. За да конфигурирате входа за свързания сървър, можете да използвате sp_addlinkedsrvlogin съхранена процедура. За да зададете конфигурационните параметри, можете да използвате sp_serveroption съхранена процедура.
В нашия случай трябва да изпълните следния код, за да добавите свързания сървър:
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'ORACLESERVER',
@srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'employee'
Изпълнете следния код, за да конфигурирате сигурността на свързания сървър:
USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ORACLESERVER',
@useself=N'False',@locallogin=NULL,@rmtuser=N'nisarg',@rmtpassword='########'
Следният код е за настройка на конфигурационните параметри:
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
Сега нека тестваме конфигурацията, като запитаме данните.
Тествайте свързаността чрез заявка за данните
За да тествате свързаността, стартирайте SQL Server Management Studio и изпълнете следната заявка:
select * from [oracleserver]..NISARG.tblEmployee
Изходът на заявката:

Както можете да видите, заявката е изпълнена успешно. Показва успешната конфигурация на свързания сървър.
Сега нека създадем съхранена процедура в SQL Server за достъп до данните от базата данни на Oracle и стартиране на Oracle SQL заявки:
create procedure sp_view_employee
as
begin
select * from [oracleserver]..NISARG.tblEmployee
end
Изпълнете командата по-долу, за да изпълните съхранената процедура:
Exec sp_view_employee
Изходът на заявката:

Нека изпълним параметризираната съхранена процедура. Кодът е следният:
create procedure sp_view_employee_name
@employeeName varchar(50)
as
begin
select * from [oracleserver]..NISARG.tblEmployee where [email protected]
end
Изпълнете процедурата:
exec sp_view_employee 'Nisarg Upadhyay'
Изходът на заявката:

Резюме
По този начин можете да конфигурирате свързания сървър в Oracle срещу SQL Server 2019. Описахме процеса стъпка по стъпка и се надяваме, че тази статия ще ви помогне в работата ви.
Прочетете също
Подводни камъни при използването на свързани сървъри