Collection Contents Zurück Weiter PDF

MobiLink Benutzerhandbuch

Synchronisationsmethoden

Eindeutige Primärschlüssel aufrechterhalten

Eindeutige Primärschlüssel mit Global Autoinkrement-Werten aufrechterhalten

Eindeutige Datenbank-Identifizierungsnummern beim Datenbank-Extrahieren festlegen

Wenn Sie das Extraktionsdienstprogramm verwenden, um Ihre entfernten Datenbanken zu erstellen, können Sie eine gespeicherte Prozedur schreiben, um diese Aufgabe zu automatisieren. Wenn Sie eine gespeicherte Prozedur namens sp_hook_dbxtract_begin erstellen, wird sie automatisch vom Extraktionsdienstprogramm aufgerufen. Bevor die Prozedur aufgerufen wird, erstellt das Extraktionsdienstprogramm eine temporäre Tabelle namens #hook_dict mit dem folgenden Inhalt:

Name Wert
extracted_db_global_id Zu extrahierende Benutzer-ID

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

Beispiel 

Angenommen, Sie wollen eine Datenbank für den entfernten Benutzer user2 mit der user_id 101 extrahieren. Wenn Sie keine sp_hook_dbxtract_begin-Prozedur festlegen, wird die GLOBAL_DATABASE_ID der extrahierten Datenbank auf  101 eingestellt.

Wenn Sie eine sp_hook_dbxtract_begin-Prozedur festlegen, die aber keine Zeilen in #hook_dict ändert, dann bleibt die Option weiterhin auf 101 eingestellt.

Nehmen wir an, Sie richten die Datenbank folgendermaßen ein:

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'

Dadurch erhält jede extrahierte oder erneut extrahierte Datenbank einen anderen Wert für GLOBAL_DATABASE_ID. Die Erste beginnt mit 1001, die Nächste mit 2001 und so weiter.

Um die Fehlerbehebung von Prozedureinstiegen zu unterstützen, gibt dbxtract Folgendes aus, wenn der ausführliche Meldungsmodus eingestellt ist:


Collection Contents Zurück Weiter PDF