Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer et configurer Oracle Linked Server dans SQL Server

Cet article explique le processus étape par étape de création et de configuration d'un serveur lié entre Oracle 19c et SQL Server 2019.

Prérequis pour créer un serveur lié

Pour démonstration, j'ai installé SQL Server 2019 sur mon poste de travail. Parallèlement, j'ai installé Oracle 19c et créé une instance nommée EMPLOYEE . Dans mes prochains articles, j'expliquerai également le processus d'installation et de configuration étape par étape d'Oracle 19c.

Pour configurer le serveur lié, nous devons d'abord créer une base de données dans Oracle, puis créer un utilisateur dans la base de données Oracle. La commande CREATE USER le fera. Le mot clé GRANT garantit la connexion , ressource , et tablespace illimité privilèges à l'utilisateur. Vous pouvez vous référer à cet article pour plus de détails sur le mot-clé CREATE USER.

Ouvrez SQL Plus et connectez-le par Oracle à l'aide de la commande suivante :

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

La commande demande le mot de passe. Gardez-le vide et appuyez sur Entrée .

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

Maintenant, nous sommes connectés à l'instance Oracle avec succès. Exécutez la requête suivante pour créer un utilisateur nommé nisarg :

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

La requête suivante accorde l'autorisation appropriée au nisarg utilisateur :

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

Créer une table sur la base de données des employés

Nous créons trois tables :tblemployee , tblDepartment , et tblDesignation . La clé étrangère est sur le tblemployee table. Les colonnes de clé étrangère sont employee_dept_id et employee_designation_id . Ils font référence à tblDepartment et tblDesignation les tables. Les scripts pour créer les tables sont ci-dessous.

Crée le tblemployee tableau :

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;

Créez le tblDepartment tableau :

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

Créez la tblDesignation tableau :

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

Ici vous pouvez voir le diagramme ER :

Maintenant, créons le serveur lié.

Créer le serveur lié à l'aide de SSMS

Lorsque nous installons Oracle 19c, client ou serveur, un fournisseur nommé OraOLEDB.Oracle sera créé. Ces fournisseurs assurent la communication entre SQL Server et d'autres sources de données ou bases de données.

Après avoir installé Oracle, vous pouvez voir que le fournisseur OLEDB a été créé sous Fournisseurs nœud de SQL Server Management Studio.

Avant de créer un nouveau serveur lié, nous devons activer le A laisser inprocess paramètre.

Faites un clic droit sur OraOLEDB.Oracle et cliquez sur Propriétés :

Sur les Options du fournisseur l'écran, cliquez sur Autoriser inprocess . Cliquez sur OK pour enregistrer la configuration :

Pour créer un serveur lié, ouvrez SSMS et connectez-vous au moteur de base de données. Développez Objets serveur> Serveurs liés> Nouveau serveur lié :

Dans la fenêtre de configuration, indiquez les détails suivants :

  1. Serveur lié . Spécifiez le nom du serveur lié. Ce nom ne doit pas contenir d'espace ou d'autres caractères . Dans notre cas, le nom du serveur lié est ORACLESERVER .
  2. Type de serveur . Vous pouvez choisir SQL Server ou d'autres sources de données. Dans notre cas, nous créons un serveur lié entre Oracle et SQL Server. Par conséquent, choisissez Autres données source .
  3. Fournisseur . Sélectionnez le nom du fournisseur menu déroulant. Dans notre cas, il s'agit d'Oracle Provider for OLEDB .
  4. Source de données . Le nom de la source de données est le nom du service de l'instance Oracle . Dans notre cas, il s'agit de employé .

Vous pouvez afficher la liste des services sous Service Naming de la Configuration Oracle Net gestionnaire> Service Naming> sélectionnez le nom du service.

Maintenant, configurons les paramètres de sécurité pour se connecter au serveur de base de données Oracle :dans le Nouveau serveur lié fenêtre, allez dans Sécurité rubrique.

Nous établissons la connexion à l'aide de la Connexion à distance et mot de passe. Pour cela, sélectionnez l'option Be made using this security context option et spécifiez les informations d'identification :

Pour exécuter des procédures stockées à distance, nous devons activer RPC (appel de procédure à distance) dans le serveur lié.

Accédez aux Options du serveur section et définissez le RPC valeur True :

Maintenant, cliquez sur OK pour créer un serveur lié. Une fois que cela est fait avec succès, vous pouvez le voir sous les serveurs LinkedIn nœud dans SSMS :

Créer un serveur lié à l'aide de T-SQL

Vous pouvez exécuter le script T-SQL pour créer un serveur lié. Ensuite, pour ajouter un serveur lié, vous pouvez utiliser le sp_addlinkedserver procédure stockée. Pour configurer la connexion pour le serveur lié, vous pouvez utiliser le sp_addlinkedsrvlogin procédure stockée. Pour définir les paramètres de configuration, vous pouvez utiliser sp_serveroption procédure stockée.

Dans notre cas, vous devez exécuter le code suivant pour ajouter le serveur lié :

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

Exécutez le code suivant pour configurer la sécurité du serveur lié :

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

Le code suivant sert à définir les paramètres de configuration :

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

Maintenant, testons la configuration en interrogeant les données.

Tester la connectivité en interrogeant les données

Pour tester la connectivité, lancez SQL Server Management Studio et exécutez la requête suivante :

select * from [oracleserver]..NISARG.tblEmployee

Le résultat de la requête :

Comme vous pouvez le voir, la requête a été exécutée avec succès. Il indique la configuration réussie du serveur lié.

Maintenant, créons une procédure stockée dans SQL Server pour accéder aux données de la base de données Oracle et exécuter des requêtes Oracle SQL :

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

Exécutez la commande ci-dessous pour exécuter la procédure stockée :

Exec sp_view_employee

Le résultat de la requête :

Exécutons la procédure stockée paramétrée. Le code est le suivant :

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

Exécutez la procédure :

exec sp_view_employee 'Nisarg Upadhyay'

Le résultat de la requête :

Résumé

De cette façon, vous pouvez configurer le serveur lié dans Oracle vs SQL Server 2019. Nous avons décrit le processus étape par étape et nous espérons que cet article vous aidera dans votre travail.

Lire aussi

Pièges de l'utilisation du serveur lié