Tento článek vysvětluje krok za krokem proces vytváření a konfigurace propojeného serveru mezi Oracle 19c a SQL Server 2019.
Předpoklady pro vytvoření propojeného serveru
Pro ukázku jsem na svou pracovní stanici nainstaloval SQL Server 2019. Spolu s tím jsem nainstaloval Oracle 19c a vytvořil instanci s názvem EMPLOYEE . Ve svých dalších článcích také vysvětlím krok za krokem proces instalace a konfigurace Oracle 19c.
Pro konfiguraci propojeného serveru musíme nejprve vytvořit databázi v Oracle a poté vytvořit uživatele v Oracle DB. Udělá to příkaz CREATE USER. Klíčové slovo GRANT zajišťuje připojení , zdroj a neomezený tabulkový prostor oprávnění pro uživatele. Další podrobnosti o klíčovém slově CREATE USER naleznete v tomto článku.
Otevřete SQL Plus a připojte jej Oracle pomocí následujícího příkazu:
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
Příkaz vyzve k zadání hesla. Nechte jej prázdný a stiskněte 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
Nyní jsme úspěšně připojeni k instanci Oracle. Spuštěním následujícího dotazu vytvořte uživatele s názvem nisarg :
SQL> create user nisarg identified by "[email protected]";
User-created.
Další dotaz uděluje příslušné oprávnění nisarg uživatel:
SQL> grant connect,resource, unlimited tablespace to nisarg;
Grant succeeded.
Vytvořte tabulku v databázi zaměstnanců
Vytváříme tři tabulky:tblemployee , tblDepartment a tblDesignation . Cizí klíč je na tblemployee stůl. Sloupce cizího klíče jsou employee_dept_id a employee_designation_id . Odkazují na tblDepartment a tblDesignation tabulky. Skripty pro vytvoření tabulek jsou uvedeny níže.
Vytvoří tblemployee tabulka:
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;
Vytvořte tblDepartment tabulka:
CREATE TABLE NISARG."tblDepartment" (
"Dept_ID" INTEGER GENERATED ALWAYS AS IDENTITY (
MAXVALUE 1000000000000000000000000000),
"Dept_name" NVARCHAR2(50)
)
TABLESPACE USERS;
Vytvořte tblDesignation tabulka:
CREATE TABLE NISARG."tblDesignation" (
"Designation_ID" NUMBER(10, 0) GENERATED ALWAYS AS IDENTITY (
MAXVALUE 1000000000000000000000000000),
"Designation_Name" NVARCHAR2(50)
)
TABLESPACE USERS;
Zde můžete vidět ER diagram:
Nyní vytvoříme propojený server.
Vytvořte propojený server pomocí SSMS
Když nainstalujeme Oracle 19c, klienta nebo server, poskytovatel s názvem OraOLEDB.Oracle bude vytvořen. Tito poskytovatelé zajišťují komunikaci mezi SQL Serverem a dalšími datovými zdroji nebo databázemi.
Po instalaci Oracle můžete vidět, že poskytovatel OLEDB byl vytvořen v části Poskytovatelé uzel SQL Server Management Studio.
Než vytvoříme nový propojený server, musíme povolit A nízký průběh parametr.
Klikněte pravým tlačítkem na OraOLEDB.Oracle a klikněte na Vlastnosti :
Na stránce Možnosti poskytovatele klikněte na Povolit zpracování . Klikněte na OK pro uložení konfigurace:
Chcete-li vytvořit propojený server, otevřete SSMS a připojte se k databázovému stroji. Rozbalte Objekty serveru> Propojené servery> Nový propojený server :
V konfiguračním okně zadejte následující podrobnosti:
- Propojený server . Zadejte název propojeného serveru. Tento název nesmí obsahovat mezeru ani jiné znaky . V našem případě je název propojeného serveru ORACLESERVER .
- Typ serveru . Můžete si vybrat SQL Server nebo jiné zdroje dat. V našem případě vytváříme propojený server mezi Oracle a SQL Server. Zvolte proto Jiná data zdroj .
- Poskytovatel . Vyberte název od Poskytovatele rozbalovací nabídka. V našem případě je to Oracle Provider for OLEDB .
- Zdroj dat . Název zdroje dat je název služby instance Oracle . V našem případě je to zaměstnanec .
Seznam služeb si můžete prohlédnout v části Pojmenování služeb Konfigurace sítě Oracle manažer> Pojmenování služeb> vyberte název služby.
Nyní nakonfigurujeme nastavení zabezpečení pro připojení k databázovému serveru Oracle:v New Linked Server přejděte do okna Zabezpečení sekce.
Spojení navážeme pomocí Vzdáleného přihlášení a Heslo. Chcete-li to provést, vyberte možnost Vytvořit pomocí tohoto kontextu zabezpečení a zadejte přihlašovací údaje:
Chcete-li spustit vzdálené uložené procedury, musíme povolit RPC (vzdálené volání procedur) na propojeném serveru.
Přejděte na Možnosti serveru a nastavte RPC hodnotu jako True :
Nyní klikněte na OK vytvořit propojený server. Jakmile bude úspěšně proveden, můžete si jej prohlédnout pod Servery LinkedIn uzel v SSMS:
Vytvořte propojený server pomocí T-SQL
Chcete-li vytvořit propojený server, můžete spustit skript T-SQL. Chcete-li přidat propojený server, můžete použít sp_addlinkedserver uložené procedury. Chcete-li nakonfigurovat přihlášení pro propojený server, můžete použít sp_addlinkedsrvlogin uložené procedury. Pro nastavení konfiguračních parametrů můžete použít sp_serveroption uložená procedura.
V našem případě byste měli pro přidání propojeného serveru spustit následující kód:
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'ORACLESERVER',
@srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'employee'
Chcete-li nakonfigurovat zabezpečení propojeného serveru, spusťte následující kód:
USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ORACLESERVER',
@useself=N'False',@locallogin=NULL,@rmtuser=N'nisarg',@rmtpassword='########'
Následující kód slouží k nastavení konfiguračních parametrů:
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
Nyní otestujeme konfiguraci dotazem na data.
Otestujte konektivitu dotazem na data
Chcete-li otestovat připojení, spusťte SQL Server Management Studio a proveďte následující dotaz:
select * from [oracleserver]..NISARG.tblEmployee
Výstup dotazu:
Jak vidíte, dotaz byl úspěšně proveden. Označuje úspěšnou konfiguraci propojeného serveru.
Nyní vytvoříme uloženou proceduru na serveru SQL Server pro přístup k datům z databáze Oracle a spouštění dotazů Oracle SQL:
create procedure sp_view_employee
as
begin
select * from [oracleserver]..NISARG.tblEmployee
end
Spusťte níže uvedený příkaz a spusťte uloženou proceduru:
Exec sp_view_employee
Výstup dotazu:
Proveďme parametrizovanou uloženou proceduru. Kód je následující:
create procedure sp_view_employee_name
@employeeName varchar(50)
as
begin
select * from [oracleserver]..NISARG.tblEmployee where [email protected]
end
Spusťte postup:
exec sp_view_employee 'Nisarg Upadhyay'
Výstup dotazu:
Shrnutí
Tímto způsobem můžete nakonfigurovat Linked server v Oracle vs SQL Server 2019. Popsali jsme proces krok za krokem a doufáme, že vám tento článek pomůže ve vaší práci.
Přečtěte si také
Úskalí používání propojeného serveru