Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erstellen und konfigurieren Sie Oracle Linked Server in SQL Server

In diesem Artikel wird Schritt für Schritt erläutert, wie Sie einen Verbindungsserver zwischen Oracle 19c und SQL Server 2019 erstellen und konfigurieren.

Voraussetzungen zum Erstellen eines Verbindungsservers

Zur Demonstration habe ich SQL Server 2019 auf meiner Workstation installiert. Gleichzeitig habe ich Oracle 19c installiert und eine Instanz namens EMPLOYEE erstellt . In meinen weiteren Artikeln werde ich auch den schrittweisen Installations- und Konfigurationsprozess von Oracle 19c erläutern.

Um den Verbindungsserver zu konfigurieren, müssen wir zuerst eine Datenbank in Oracle erstellen und dann einen Benutzer in der Oracle-DB erstellen. Der Befehl CREATE USER erledigt dies. Das Schlüsselwort GRANT stellt die Verbindung sicher , Ressource , und unbegrenzter Tablespace Privilegien für den Benutzer. Weitere Informationen zum Schlüsselwort CREATE USER finden Sie in diesem Artikel.

Öffnen Sie SQL Plus und verbinden Sie es mit Oracle mit dem folgenden Befehl:

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

Der Befehl fordert zur Eingabe des Kennworts auf. Lassen Sie es leer und drücken Sie 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

Jetzt sind wir erfolgreich mit der Oracle-Instanz verbunden. Führen Sie die folgende Abfrage aus, um einen Benutzer namens nisarg zu erstellen :

SQL> create user nisarg identified by "[email protected]";
User-created. 

Die nächste Abfrage erteilt nisarg die entsprechende Berechtigung Benutzer:

SQL> grant connect,resource, unlimited tablespace to nisarg;
Grant succeeded.

Erstellen Sie eine Tabelle in der Employee-Datenbank

Wir erstellen drei Tabellen:tblemployee , tblDepartment , und tblDesignation . Der Fremdschlüssel befindet sich auf tblemployee Tisch. Die Fremdschlüsselspalten sind employee_dept_id und employee_designation_id . Sie verweisen auf tblDepartment und tblBezeichnung Tische. Skripte zum Erstellen der Tabellen finden Sie unten.

Erstellt den tblemployee Tabelle:

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;

Erstellen Sie die tblDepartment Tabelle:

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

Erstellen Sie die tblDesignation Tabelle:

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

Hier sehen Sie das ER-Diagramm:

Lassen Sie uns nun den Verbindungsserver erstellen.

Erstellen Sie den Verbindungsserver mit SSMS

Wenn wir Oracle 19c, Client oder Server, installieren, wird ein Anbieter namens OraOLEDB.Oracle wird erstellt. Diese Provider stellen die Kommunikation zwischen dem SQL Server und anderen Datenquellen oder Datenbanken sicher.

Nach der Installation von Oracle können Sie sehen, dass der OLEDB-Provider unter Providers erstellt wurde Knoten von SQL Server Management Studio.

Bevor wir einen neuen Verbindungsserver erstellen, müssen wir A aktivieren In Bearbeitung zulassen Parameter.

Klicken Sie mit der rechten Maustaste auf OraOLEDB.Oracle und klicken Sie auf Eigenschaften :

In den Anbieteroptionen Bildschirm, klicken Sie auf In Bearbeitung zulassen . Klicken Sie auf OK Konfiguration speichern:

Um einen Verbindungsserver zu erstellen, öffnen Sie SSMS und stellen Sie eine Verbindung mit der Datenbank-Engine her. Erweitern Sie Serverobjekte> Verbindungsserver> Neuer Verbindungsserver :

Geben Sie im Konfigurationsfenster die folgenden Details an:

  1. Verknüpfter Server . Geben Sie den Namen des Verbindungsservers an. Dieser Name darf keine Leerzeichen oder andere Zeichen enthalten . In unserem Fall lautet der Name des verknüpften Servers ORACLESERVER .
  2. Servertyp . Sie können SQL Server oder andere Datenquellen auswählen. In unserem Fall erstellen wir einen Verbindungsserver zwischen Oracle und SQL Server. Wählen Sie daher Andere Daten Quelle .
  3. Anbieter . Wählen Sie den Namen aus dem Anbieter aus Dropdown-Menü. In unserem Fall ist es Oracle Provider for OLEDB .
  4. Datenquelle . Der Datenquellenname ist der Dienstname der Oracle-Instanz . In unserem Fall ist es Mitarbeiter .

Sie können die Liste der Dienste unter Dienstbenennung anzeigen der Oracle Net Configuration manager> Dienstbenennung> Wählen Sie den Dienstnamen aus.

Lassen Sie uns nun die Sicherheitseinstellungen konfigurieren, um eine Verbindung zum Oracle-Datenbankserver herzustellen:im New Linked Server gehen Sie zu Sicherheit Abschnitt.

Die Verbindung stellen wir über den Remote-Login her und Passwort. Wählen Sie dazu Mit diesem Sicherheitskontext erstellen aus Option und geben Sie die Anmeldeinformationen an:

Um remote gespeicherte Prozeduren auszuführen, müssen wir RPC (Remote Procedure Call) auf dem Verbindungsserver aktivieren.

Gehen Sie zu den Serveroptionen Abschnitt und legen Sie den RPC fest Wert als Wahr :

Klicken Sie jetzt auf OK um einen Verbindungsserver zu erstellen. Sobald dies erfolgreich durchgeführt wurde, können Sie es unter den LinkedIn-Servern anzeigen Knoten in SSMS:

Erstellen Sie einen Verbindungsserver mit T-SQL

Sie können das T-SQL-Skript ausführen, um einen Verbindungsserver zu erstellen. Um dann einen Verbindungsserver hinzuzufügen, können Sie den sp_addlinkedserver verwenden gespeicherte Prozedur. Um die Anmeldung für den Verbindungsserver zu konfigurieren, können Sie sp_addlinkedsrvlogin verwenden gespeicherte Prozedur. Um die Konfigurationsparameter festzulegen, können Sie die sp_serveroption verwenden gespeicherte Prozedur.

In unserem Fall sollten Sie den folgenden Code ausführen, um den Verbindungsserver hinzuzufügen:

USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'ORACLESERVER', 
@srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'employee'

Führen Sie den folgenden Code aus, um die Verbindungsserversicherheit zu konfigurieren:

USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ORACLESERVER',
@useself=N'False',@locallogin=NULL,@rmtuser=N'nisarg',@rmtpassword='########'

Der folgende Code dient zum Setzen der Konfigurationsparameter:

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

Lassen Sie uns nun die Konfiguration testen, indem wir die Daten abfragen.

Testen Sie die Konnektivität durch Abfragen der Daten

Starten Sie zum Testen der Konnektivität SQL Server Management Studio und führen Sie die folgende Abfrage aus:

select * from [oracleserver]..NISARG.tblEmployee

Die Abfrageausgabe:

Wie Sie sehen können, wurde die Abfrage erfolgreich ausgeführt. Es zeigt die erfolgreiche Konfiguration des Verbindungsservers an.

Lassen Sie uns nun eine gespeicherte Prozedur in SQL Server erstellen, um auf die Daten aus der Oracle-Datenbank zuzugreifen und Oracle SQL-Abfragen auszuführen:

create procedure sp_view_employee
as
begin
select * from [oracleserver]..NISARG.tblEmployee
end

Führen Sie den folgenden Befehl aus, um die gespeicherte Prozedur auszuführen:

Exec sp_view_employee

Die Abfrageausgabe:

Lassen Sie uns die parametrisierte gespeicherte Prozedur ausführen. Der Code lautet wie folgt:

create procedure sp_view_employee_name
@employeeName varchar(50)
as
begin
select * from [oracleserver]..NISARG.tblEmployee where [email protected]
end

Führen Sie die Prozedur aus:

exec sp_view_employee 'Nisarg Upadhyay'

Die Abfrageausgabe:

Zusammenfassung

Auf diese Weise können Sie den Linked Server in Oracle vs. SQL Server 2019 konfigurieren. Wir haben den Prozess Schritt für Schritt beschrieben und hoffen, dass dieser Artikel Ihnen bei Ihrer Arbeit hilft.

Lesen Sie auch

Fallstricke bei der Nutzung von Linked Server