Speichert benutzerdefinierte Informationen in der Titelseite der Datenbankdatei
Zeichenfolge (bis zu 128 Byte)
Leere Zeichenfolge
Kann nur für die PUBLIC-Gruppe gesetzt werden. Wird sofort wirksam. DBA-Berechtigung ist erforderlich.
Sie können Informationen in der Titelseite der Datenbankdatei speichern und sie später extrahieren, indem Sie die Datei direkt von Ihrer Anwendung aus lesen. Diese Seite ist im System-DBSpace "file header" (Dateititel) gespeichert. Wenn Sie für die OEM-Zeichenfolge einen längeren Wert als 128 Byte angeben, wird ein Fehler zurückgegeben.
Es kann nützlich sein, Informationen wie Schemaversionen, den Anwendungsnamen, die Anwendungsversion etc. zu speichern. Alternativ könnte eine Anwendung, ohne die Datenbank zu starten, die OEM-Zeichenfolge verwenden, um zu ermitteln, ob die Datenbankdatei der Anwendung zugeordnet ist, oder Sie können Ihre Anwendung so planen, dass sie die Informationen verwendet, um zu validieren, dass die Datenbankdatei für Ihre Anwendung bestimmt ist. Dies geschieht, indem eine Zeichenfolge gespeichert wird, die die Anwendung für Validierungszwecke liest, bevor die Datenbankdatei verwendet wird. Sie könnten auch Metadaten extrahieren, um sie Benutzern anzuzeigen.
Um oem_string im System-DBSpace "file header" zu setzen, führen Sie die folgende Anweisung aus:
SET OPTION PUBLIC.oem_string=user-specified-string; |
Der user-specified-string-Wert wird sowohl in der ISYSOPTION-Systemtabelle als auch im Datei-Header des System-DBSpaces gespeichert. Sie müssen die Zeichenfolge im erforderlichen Zeichensatz definieren, bevor Sie sie in einer SET OPTION-Anweisung angeben können, weil keine Konvertierung der Zeichenfolge stattfindet, wenn sie an die SET OPTION-Anweisung übergeben wird. Sie können die CSCONVERT-Funktion verwenden, um die Zeichenfolge in den erforderlichen Zeichensatz zu konvertieren.
Sie können den Wert von oem_string auf folgende Arten abrufen:
Unter Verwendung der Verbindungseigenschaft oem_string:
SELECT CONNECTION_PROPERTY( 'oem_string' ); |
Unter Verwendung der SYSOPTION-Systemansicht:
SELECT setting FROM SYSOPTION WHERE "option" = 'oem_string'; |
Öffnen Sie die System-DBSpace-Datei der Datenbank.
Lesen Sie die erste Seite der Datei in einen Puffer.
Durchsuchen Sie den Puffer nach den 2 Byte großen Präfix- und Suffixsequenzen vor und hinter der OEM-Zeichenfolge.
Die Präfix- und Suffixzeichenfolgen sind in sqldef.h als DB_OEM_STRING_PREFIX bzw. DB_OEM_STRING_SUFFIX definiert. Alle Bytes zwischen diesen beiden Zeichenfolgen legen die OEM-Zeichenfolge fest, wie sie in der Datenbank definiert ist.
SQL Anywhere stellt zwei Beispielprogramme im oem_string-Verzeichnis zur Verfügung:
dboem.cpp ist ein C-Programm, das illustriert, wie die OEM-Zeichenfolge extrahiert und im Fenster der Datenbankservermeldungen angezeigt wird.
dboem.pl illustriert, wie die OEM-Zeichenfolge extrahiert und im "stdout" innerhalb eines PERL-Skripten angezeigt wird.
Anwendungen dürfen die OEM-Zeichenfolge in der Datenbank nicht direkt beschreiben, weil dies die Datenbank-Titelseite beschädigt.
Unter Windows können Anwendungen die Datei nicht direkt lesen, wenn ein Server die Datenbankdatei geladen hat. Der Datenbankserver hat eine exklusive Sperre auf der Datei. Auf einer unterstützten Unix-Plattform hingegen können Anwendungen mit Leseberechtigung die Datei jederzeit direkt lesen. Allerdings werden Änderungen an der OEM-Zeichenfolge möglicherweise nicht sofort angezeigt. Das Ausgeben eines Checkpoints bewirkt, dass der Datenbankserver Seite 0 auf die Festplatte leert und den aktuellen OEM-Zeichenfolgenwert wiederspiegelt.
Sollte der Datenbankserver zwischen der Änderung der OEM-Zeichenfolge und dem nächsten Checkpoint ausfallen, spiegelt der Dateititel möglicherweise nicht den neuen OEM-Zeichenfolgenwert wieder. Der neue OEM-Zeichenfolgenwert wird korrekt gesetzt, wenn eine Wiederherstellung der Datenbank durchgeführt wird.
Das folgende Beispiel verschlüsselt die OEM-Zeichenfolge, die Informationen über die Datenbankdatei enthält, und speichert sie in der Datenbank-Titeldatei:
BEGIN DECLARE @v VARCHAR(100); SET @v = BASE64_ENCODE( ENCRYPT( 'database version 10', 'abc' ) ); EXECUTE IMMEDIATE 'SET OPTION PUBLIC.oem_string = ''' || @v || ''''; END; |
Sie können den Wert der OEM-Zeichenfolge abrufen, indem Sie die folgende Anweisung ausführen:
SELECT DECRYPT( BASE64_DECODE( CONNECTION_PROPERTY( 'oem_string' ) ),'abc' ) |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |