Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Twórz i konfiguruj Oracle Linked Server w SQL Server

W tym artykule wyjaśniono krok po kroku proces tworzenia i konfigurowania serwera połączonego między Oracle 19c a SQL Server 2019.

Wymagania wstępne do utworzenia połączonego serwera

W celach demonstracyjnych zainstalowałem SQL Server 2019 na mojej stacji roboczej. Wraz z nim zainstalowałem Oracle 19c i stworzyłem instancję o nazwie PRACOWNIK . W kolejnych artykułach wyjaśnię również krok po kroku proces instalacji i konfiguracji Oracle 19c.

Aby skonfigurować połączony serwer, musimy najpierw utworzyć bazę danych w Oracle, a następnie utworzyć użytkownika w Oracle DB. Zrobi to polecenie CREATE USER. Słowo kluczowe GRANT zapewnia połączenie , zasób i nieograniczona przestrzeń tabel uprawnienia użytkownika. Możesz zapoznać się z tym artykułem, aby uzyskać więcej informacji na temat słowa kluczowego CREATE USER.

Otwórz SQL Plus i połącz go przez Oracle za pomocą następującego polecenia:

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

Polecenie monituje o hasło. Pozostaw puste i naciśnij 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

Teraz pomyślnie połączyliśmy się z instancją Oracle. Uruchom następujące zapytanie, aby utworzyć użytkownika o nazwie nisarg :

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

Następne zapytanie przyznaje odpowiednie uprawnienia nisargowi użytkownik:

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

Utwórz tabelę w bazie danych pracowników

Tworzymy trzy tabele:tblemployee , Dział tabeli i tblDesignation . Klucz obcy znajduje się w tblemployee stół. Kolumny klucza obcego to employee_dept_id i employee_designation_id . Odnoszą się do tblDepartment i tblDesignation tabele. Poniżej znajdują się skrypty do tworzenia tabel.

Tworzy pracownika roboczego tabela:

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;

Utwórz tblDepartment tabela:

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

Utwórz tblDesignation tabela:

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

Tutaj możesz zobaczyć diagram ER:

Teraz stwórzmy połączony serwer.

Utwórz połączony serwer za pomocą SSMS

Kiedy instalujemy Oracle 19c, klienta lub serwer, dostawca o nazwie OraOLEDB.Oracle zostanie utworzona. Dostawcy ci zapewniają komunikację między serwerem SQL a innymi źródłami danych lub bazami danych.

Po zainstalowaniu Oracle możesz zobaczyć, że dostawca OLEDB został utworzony w ramach Dostawcy węzeł SQL Server Management Studio.

Zanim utworzymy nowy serwer połączony, musimy włączyć A zezwól na przetwarzanie parametr.

Kliknij prawym przyciskiem myszy OraOLEDB.Oracle i kliknij Właściwości :

W Opcjach dostawcy ekranie, kliknij Zezwól na przetwarzanie . Kliknij OK aby zapisać konfigurację:

Aby utworzyć połączony serwer, otwórz SSMS i połącz się z silnikiem bazy danych. Rozwiń Obiekty serwera> Serwery połączone> Nowy serwer połączony :

W oknie konfiguracji określ następujące szczegóły:

  1. Połączony serwer . Podaj nazwę połączonego serwera. Ta nazwa nie może zawierać spacji ani innych znaków . W naszym przypadku nazwa połączonego serwera to ORACLESERVER .
  2. Typ serwera . Możesz wybrać SQL Server lub inne źródła danych. W naszym przypadku tworzymy serwer połączony pomiędzy Oracle a SQL Server. Dlatego wybierz Inne dane źródło .
  3. Dostawca . Wybierz nazwę z Dostawcy menu rozwijane. W naszym przypadku jest to Oracle Dostawca OLEDB .
  4. Źródło danych . Nazwa źródła danych to nazwa usługi instancji Oracle . W naszym przypadku jest to pracownik .

Listę usług możesz wyświetlić w sekcji Nazewnictwo usług Konfiguracji Oracle Net kierownik> Nazewnictwo usług> wybierz nazwę usługi.

Teraz skonfigurujmy ustawienia zabezpieczeń, aby połączyć się z serwerem bazy danych Oracle:w Nowym serwerze połączonym przejdź do okna Zabezpieczenia sekcja.

Nawiązujemy połączenie za pomocą Zdalnego logowania i hasło. W tym celu wybierz Utwórz przy użyciu tego kontekstu bezpieczeństwa opcję i określ poświadczenia:

Aby wykonać zdalne procedury składowane, musimy włączyć RPC (zdalne wywoływanie procedur) na połączonym serwerze.

Przejdź do Opcji serwera sekcji i ustaw RPC wartość jako Prawda :

Teraz kliknij OK aby stworzyć połączony serwer. Gdy zakończy się to pomyślnie, możesz go wyświetlić pod Serwerami LinkedIn węzeł w SSMS:

Utwórz połączony serwer za pomocą T-SQL

Możesz wykonać skrypt T-SQL, aby utworzyć serwer połączony. Następnie, aby dodać połączony serwer, możesz użyć sp_addlinkedserver procedura składowana. Aby skonfigurować login dla połączonego serwera, możesz użyć sp_addlinkedsrvlogin procedura składowana. Aby ustawić parametry konfiguracyjne, możesz użyć opcji sp_serveroption procedura składowana.

W naszym przypadku powinieneś wykonać następujący kod, aby dodać połączony serwer:

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

Wykonaj następujący kod, aby skonfigurować zabezpieczenia połączonego serwera:

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

Poniższy kod służy do ustawiania parametrów konfiguracyjnych:

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

Teraz przetestujmy konfigurację, wysyłając zapytanie o dane.

Przetestuj łączność, wyszukując dane

Aby przetestować łączność, uruchom SQL Server Management Studio i wykonaj następujące zapytanie:

select * from [oracleserver]..NISARG.tblEmployee

Wyniki zapytania:

Jak widać, zapytanie zostało wykonane pomyślnie. Wskazuje na pomyślną konfigurację połączonego serwera.

Teraz utwórzmy procedurę składowaną w SQL Server, aby uzyskać dostęp do danych z bazy danych Oracle i uruchamiać zapytania Oracle SQL:

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

Uruchom poniższe polecenie, aby wykonać procedurę składowaną:

Exec sp_view_employee

Wyniki zapytania:

Wykonajmy sparametryzowaną procedurę składowaną. Kod jest następujący:

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

Uruchom procedurę:

exec sp_view_employee 'Nisarg Upadhyay'

Wyjście zapytania:

Podsumowanie

W ten sposób możesz skonfigurować serwer połączony w Oracle vs SQL Server 2019. Opisaliśmy ten proces krok po kroku i mamy nadzieję, że ten artykuł pomoże ci w pracy.

Przeczytaj również

Pułapki związane z wykorzystaniem serwera połączonego


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podziel ciąg na wiersze Oracle SQL

  2. Wstaw do z CTE

  3. Jak przetestować procedurę składowaną Oracle z typem zwrotu RefCursor?

  4. Zaktualizuj wiersze w jednej tabeli danymi z innej tabeli na podstawie jednej kolumny w każdej równej

  5. Dlaczego Mysql's Group By i Oracle's Group by różnią się zachowaniami?