Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Remote » SQL Remote-Systeme erstellen » Eindeutige Identifizierungsnummern für entfernte Datenbanken

 

Datenbank-Identifizierungsnummern beim Extrahieren von Datenbanken festlegen

Wenn Sie das Extraktionsdienstprogramm (dbxtract) oder den Assistenten zum Extrahieren einer Datenbank verwenden, um Ihre entfernten Datenbanken zu erstellen, können Sie eine gespeicherte Prozedur schreiben, um das Festlegen von eindeutigen Datenbank-Identifizierungsnummern zu automatisieren.

Voraussetzungen

Hook-Prozeduren können von jedem Benutzer mit dem MANAGE REPLICATION-Systemprivileg erstellt werden. Um jedoch zu gewährleisten, dass ein Hook auf die #hook_dict-Tabelle zugreifen kann, die verwendet wird, um Daten an und aus Hooks zu übergeben, müssen Hooks eine der folgenden Anforderungen erfüllen:

  • Eigentümer muss ein Benutzer sein, der die Systemprivilegien SELECT ANY TABLE und UPDATE ANY TABLE hat.

  • Sie müssen durch die SQL SECURITY INVOKER-Klausel der CREATE PROCEDURE-Anweisung definiert sein.

 Aufgabe
  1. Erstellen Sie eine gespeicherte Prozedur namens sp_hook_dbxtract_begin.

    Beispiel: Um eine Datenbank für den entfernten Benutzer user2 mit einer user_id von 1001 zu extrahieren, führen Sie die folgenden Anweisungen aus:



    SET OPTION "PUBLIC"."global_database_id" = '1';
    CREATE TABLE extract_id (next_id INTEGER NOT NULL) ;
    INSERT INTO extract_id VALUES( 1 );
    CREATE PROCEDURE sp_hook_dbxtract_begin
    AS
        DECLARE @next_id  INTEGER
        UPDATE extract_id SET next_id = next_id + 1000
        SELECT @next_id = (next_id )
        FROM extract_id
        COMMIT
        UPDATE #hook_dict
        SET VALUE = @next_id
        WHERE NAME = 'extracted_db_global_id';

    Jede extrahierte oder wieder extrahierte Datenbank erhält einen unterschiedlichen global_database_id-Wert. Der Erste beginnt mit 1001, dann kommt 2001, und so weiter.

  2. Führen Sie das Extraktionsdienstprogramm (dbxtract) mit der Option -v oder den Assistenten zum Extrahieren einer Datenbank aus, um Ihre entfernten Datenbanken zu extrahieren. Das Extraktionsdienstprogramm führt die folgenden Aufgaben aus:

    1. Es erstellt eine temporäre Tabelle namens #hook_dict mit dem folgenden Inhalt:

      name Wert

      extracted_db_global_id

      Zu extrahierende Benutzer-ID

      Wenn Sie eine sp_hook_dbxtract_begin-Prozedur schreiben, um den Spaltenwert der Zeile zu ändern, wird dieser Wert als die global_database_id-Option der extrahierten Datenbank verwendet und markiert den Anfang des Bereichs von Primärschlüsselwerten für GLOBAL DEFAULT AUTOINCREMENT-Werte.

      • Wenn Sie keine sp_hook_dbxtract_begin-Prozedur festlegen, hat die extrahierte Datenbank eine global_database_id von 101.

      • Wenn Sie eine sp_hook_dbxtract_begin-Prozedur festlegen, die keine Zeilen in der #hook_dict-Tabelle ändert, wird die global_database_id weiterhin auf 101 gesetzt.

    2. Ruft sp_hook_dbxtract_begin auf.

    3. Gibt die folgenden Informationen aus, um die Fehlersuche von Prozedureinstiegen zu unterstützen:

      • Die gefundenen Prozedureinstiege.

      • Der Inhalt von #hook_dict vor dem Aufruf des Prozedureinstiegs.

      • Der Inhalt von #hook_dict nach dem Aufruf des Prozedureinstiegs.

Ergebnisse

Die eindeutigen Datenbank-Identifizierungsnummern sind festgelegt.

 Siehe auch