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:
- 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 .
- 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 .
- Dostawca . Wybierz nazwę z Dostawcy menu rozwijane. W naszym przypadku jest to Oracle Dostawca OLEDB .
- Ź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