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

SQL Anywhere 11.0.1 (Deutsch) » SQL Remote » SQL Remote-Replikationsplanung » SQL Remote-Replikation planen und einrichten » Jeder Datenbank eindeutige Identifizierungsnummern zuordnen

 

Eindeutige 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.

♦  So automatisieren Sie die Festlegung von eindeutigen Datenbank-Identifizierungsnummern
  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 101 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.

Siehe auch