sql >> Databáze >  >> RDS >> Oracle

Vytvořte a nakonfigurujte Oracle Linked Server v SQL Server

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:

  1. 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 .
  2. 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 .
  3. Poskytovatel . Vyberte název od Poskytovatele rozbalovací nabídka. V našem případě je to Oracle Provider for OLEDB .
  4. 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


  1. Proaktivní kontroly stavu serveru SQL Server, část 3:Nastavení instance a databáze

  2. EXTRACT (datetime) Funkce v Oracle

  3. Velmi pomalé spouštění aplikace Spring Boot

  4. Sběr dat data a času