Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, warum der SQL Server-Migrations-Assistent (SSMA) für Oracle den umschlossenen Code nicht konvertiert.
Hintergrund
Das Umschließen (Verschlüsseln) ist ein Prozess zum Ausblenden des Quellcodes. Wrapping hilft, den Quellcode vor den Wettbewerbern und anderen zu schützen, die ihn missbrauchen könnten. In Oracle kann man den Quellcode mithilfe von DBMS_DDL
Unterprogramen umschließen.
Immer wenn Sie versuchen, den umschlossenen (verschlüsselten) PL/SQL-Code zu konvertieren, gibt SSMA eine Warnmeldung an, die besagt, dass die Required code is wrapped
. Wenn Sie diese Warnung überspringen, indem Sie die Schaltfläche "Weiter " auswählen, generiert SSMA eine Fehlermeldung. Außerdem können Sie nur die Konvertierungsstatistiken und nicht den Code im Fenster "Bewertungsbericht " anzeigen, da der Code umschlossen ist.
Beispiel
Im folgenden Beispiel deklarieren Sie zwei Variablen, eine zum Speichern der Paketspezifikation und eine weitere zum Speichern des Pakettexts als Zeichenfolgen. Diese Variablen werden dann an eine vordefinierte gespeicherte Prozedur DBMS_DDL.CREATE_WRAPPED
übergeben, die ein umschlossenes Paket erstellt.
DECLARE
src_pkg_header VARCHAR2(32767);
src_pkg_body VARCHAR2(32767);
BEGIN
src_pkg_header :=
'CREATE OR REPLACE PACKAGE Wrapped_PKG IS ' ||
'x pls_integer; ' ||
'END Wrapped_PKG; ';
src_pkg_body :=
'CREATE OR REPLACE PACKAGE BODY Wrapped_PKG IS ' ||
'BEGIN ' ||
'x := 10; ' ||
'END Wrapped_PKG;';
SYS.DBMS_DDL.CREATE_WRAPPED(ddl => src_pkg_header);
SYS.DBMS_DDL.CREATE_WRAPPED(ddl => src_pkg_body);
END;
Wenn Sie den vorherigen Code in Oracle ausführen, wird ein Paket mit Namen Wrapped_PKG
erstellt. Dieses Paket wird im verschlüsselten Format erstellt, sodass Sie den Text/Code in diesem Paket nicht anzeigen können.
Wenn Sie versuchen, den Paketcode Wrapped_PKG
mit SSMA zu konvertieren, wird die folgende Fehlermeldung angezeigt:
O2SS0260: Umschlossenes Paket kann nicht konvertiert werden
Mögliche Abhilfen
Die Lösung für den vorherigen Fehler kann in die folgenden Schritte unterteilt werden:
Schritt 1: Erstellen und Ausführen nur des Paketcodes in Oracle. Konvertieren Sie diesen Code dann mit SSMA in den entsprechenden SQL Server-Code.
CREATE OR REPLACE PACKAGE Wrapped_PKG IS
x pls_integer;
END Wrapped_PKG;
CREATE OR REPLACE PACKAGE BODY Wrapped_PKG IS
BEGIN
x := 10;
END Wrapped_PKG;
Das folgende Beispiel ist der entsprechende SQL Server-Code für das vorherige Paket:
CREATE PROCEDURE dbo.WRAPPED_PKG$SSMA_Initialize_Package
AS
BEGIN
EXECUTE ssma_oracle.db_clean_storage
EXECUTE ssma_oracle.set_pv_int
DB_NAME(),
'DBO',
'WRAPPED_PKG',
'X',
10
END
Schritt 2: Fügen Sie WITH ENCRYPTION
Schlüsselwort (keyword) dem konvertierten Transact-SQL-Code hinzu, wie im folgenden Beispiel gezeigt. Dadurch wird Ihr Code in SQL Server verschlüsselt.
CREATE PROCEDURE dbo.WRAPPED_PKG$SSMA_Initialize_Package
WITH ENCRYPTION
AS
BEGIN
EXECUTE ssma_oracle.db_clean_storage
EXECUTE ssma_oracle.set_pv_int
DB_NAME(),
'DBO',
'WRAPPED_PKG',
'X',
10
END