SnowConvert: Bericht zu Objektreferenzen¶
Bemerkung
Integrierte Elemente werden in diesem Bericht nicht berücksichtigt.
Was ist eine Objektreferenz?¶
Der Begriff Objektreferenz bezieht sich auf DDL-Definitionen im Quellcode, die von Codeeinheiten referenziert werden. Die folgende Tabelle zeigt, welche Elemente in jeder unterstützten Sprache referenziert werden können.
Object | Teradata | Oracle | Transact-SQL | Extensibility Languages |
---|---|---|---|---|
Table | ✓ | ✓ | ✓ | ✓ |
View | ✓ | ✓ | ✓ | ✓ |
Procedure | ✓ | ✓ | ✓ | ✓ |
Function | ✓ | ✓ | ✓ | ✓ |
Macro | ✓ | |||
Package Function | ✓ | |||
Package Procedure | ✓ | |||
*Package | ✓ | |||
Join Index | ✓ | |||
Index | ✓ | |||
Synonym | ✓ | |||
Database Link | ✓ | |||
Type | ✓ | ✓ | ✓ | |
Materialized View | ✓ | |||
Trigger | ✓ | ✓ | ✓ | |
Sequence | ✓ | ✓ | ✓ | |
Constraint | ✓ | ✓ |
Bemerkung
Wenn im obigen Abschnitt ein Sternchen (*) aufgeführt ist, bedeutet dies, dass das Objekt verwendet wird, um Eigenschaften von sich selbst aus aufzurufen, die nicht als DDL-Anweisungen gelten, wie Konstanten, Variablen oder Cursor.
Wo kann ich es finden?¶
Der Bericht zu Objektreferenzen befindet sich in einem Ordner namens reports im Ausgabeordner Ihrer Konvertierung. Der Name der Datei selbst beginnt mit ObjectReferences, damit sie leicht gefunden werden kann.
Das Format der Datei ist .CSV.
Welche Informationen sind darin enthalten?¶
Der Bericht zu Objektreferenzen enthält die folgenden Informationen über alle bei der Konvertierung gefundenen Referenzen:
Spalte |
Beschreibung |
---|---|
PartitionKey |
Der eindeutige Bezeichner der Konvertierung. |
FileName |
Der Name der Datei, in der sich das Objekt befindet. |
Caller_CodeUnit |
Der Typ der Codeeinheit, die ein vorhandenes Element referenziert. |
Caller_CodeUnit_Database |
Die Datenbank der Codeeinheit, die ein vorhandenes Element referenziert. Derzeit können nur SQL Server-Objekte eine Datenbank haben. |
Caller_CodeUnit_Schema |
Das Schema der Codeeinheit, die ein vorhandenes Element referenziert. |
Caller_CodeUnit_Name |
Der Name der Codeeinheit, die ein vorhandenes Element referenziert. |
Caller_CodeUnit_FullName |
Der vollqualifizierte Name des Objekts, das ein vorhandenes Element referenziert. |
Referenced_Element_Type |
Der DDL-Typ des referenzierten Elements. |
Referenced_Element_Database |
Die Datenbank des referenzierten Elements. Derzeit können nur SQL Server-Objekte eine Datenbank haben. |
Referenced_Element_Schema |
Das Schema des referenzierten Elements. |
Referenced_Element_Name |
Der Name des referenzierten Elements. |
Referenced_Element_FullName |
Der vollqualifizierte Name des referenzierten Elements. |
Line |
Die Zeilennummer innerhalb der Datei, in der sich die Referenz befindet. |
Relation_Type |
Zeigt den Typ der Beziehung an, die über die Aufrufercodeeinheit und die Objektreferenz verwendet wird. |
Oracle-Datenbanklinks als Objektreferenzen¶
Um Informationen wie den Datenbanknamen, den Schemanamen oder den Objektnamen von Datenbanklinkreferenzen zu erhalten, müssen wir wissen, wie der Datenbanklink definiert wurde. Datenbanklinks enthalten die wichtigsten Informationen in der Verbindungszeichenfolge, die in ihrer Definition verwendet werden. Beispiel:
Datenbank Link mit Datenbankname¶
CREATE DATABASE LINK remote_hr_db
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB';
SELECT * FROM hr.employees@remote_hr_db;
Anhand des obigen Beispiels sollten die Objektreferenzinformationen wie folgt aussehen:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | RemoteDb | N/A | remote_hr_db | hr.employees@remote_hr_db | 6 |
Datenbanklink mit Datenbank- und Schemanamen¶
CREATE DATABASE LINK remote_hr_db1
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB.MySchema';
SELECT * FROM employees@remote_hr_db1;
Anhand des obigen Beispiels sollten die Objektreferenzinformationen wie folgt aussehen:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | RemoteDb | MySchema | remote_hr_db1 | hr.employees@remote_hr_db1 | 6 |
Datenbanklink mit einer Verbindungszeichenfolge¶
CREATE DATABASE LINK remote_hr_db2
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING '(DESCRIPTION=(
ADDRESS=
(PROTOCOL=TCP)
(HOST=10.48.195.17)
(PORT=1521))
(CONNECT_DATA=(SID=MyDB)))';
SELECT * FROM employees@remote_hr_db2;
Anhand des obigen Beispiels sollten die Objektreferenzinformationen wie folgt aussehen:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | MyDB | N/A | remote_hr_db2 | employees@remote_hr_db2 | 6 |
Beziehungstyp¶
Der Beziehungstyp stellt dar, wie eine Aufrufecodeeinheit mit einer Objektreferenz verbunden ist. SnowConvert ist in der Lage, die folgenden Arten von Beziehungen zu erkennen:
FOREIGN KEY
INSERT
DELETE
UPDATE
CALL
EXECUTE
SYNONYM
ALTER
DROP
MERGE
TRUNCATE
LOCK
INDEX
TABLE COLUMN
GRANT
REVOKE
SELECT
COLUMN
FROM
WHERE
HAVING
GROUP BY
JOIN
ORDER BY
Beispiele¶
Eine gespeicherte Prozedur, die eine Tabelle über eine UPDATE-Anweisung referenziert:
CREATE TABLE TABLE2
(
COL1 VARCHAR(50) NOT NULL,
COL2 INT NOT NULL
);
CREATE OR REPLACE PROCEDURE Procedure01 (param1 NUMBER)
IS
BEGIN
UPDATE TABLE2
SET COL1 = 'Anderson'
WHERE COL2 = param1;
END;
Der Bericht zeigt in etwa die folgende Tabelle:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE PROCEDURE | CREATE TABLE | TABLE2 | 10 | UPDATE |
Eine Tabelle, die eine andere Tabelle über einen FOREIGN KEY referenziert:
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE TABLE TABLE2
(
COL1 INT,
CONSTRAINT FK_COL1 FOREIGN KEY (COL1)
REFERENCES TABLE1(COL1)
);
Der Bericht zeigt in etwa die folgende Tabelle:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE TABLE | CREATE TABLE | TABLE1 | 10 | FOREIGN KEY |
Eine Tabelle, die von einer Ansicht in der FROM-Klausel der SELECT-Anweisung referenziert wird:
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE VIEW VIEW1
AS
SELECT * FROM TABLE1;
Der Bericht zeigt in etwa die folgende Tabelle:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE TABLE | TABLE1 | 8 | SELECT - FROM |
Eine benutzerdefinierte Funktion (User-Defined Function, UDF), die von einer Ansicht als Resultset-Spalte referenziert wird.
CREATE FUNCTION FUNCTION1(PARAM1 INT)
RETURN NUMBER
IS
BEGIN
RETURN(PARAM1 + 1);
END;
CREATE VIEW VIEW1
AS
SELECT FUNCTION1(*) FROM TABLE1;
Der Bericht zeigt in etwa die folgende Tabelle:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE FUNCTION | FUNCTION1 | 10 | SELECT - COLUMN |