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) » MobiLink - Serveradministration » MobiLink-Ereignisse » Synchronisationsereignisse

 

report_error (Verbindungsereignis)

Mit diesem Skript können Sie Fehler protokollieren und die vom handle_error-Skript ausgewählten Aktionen aufzeichnen.

Parameter

In der folgenden Tabelle stellt die Beschreibung den SQL-Datentyp bereit. Wenn Sie Ihr Skript in Java oder .NET schreiben, müssen Sie den entsprechenden Datentyp benutzen. Weitere Hinweise finden Sie unter SQL-Java-Datentypen und SQL-.NET-Datentypen.

In SQL-Skripten können Sie Ereignisparameter mit ihrem Namen oder mit einem Fragezeichen angeben. Namen und Fragezeichen dürfen jedoch in einem Skript nicht gemischt verwendet werden. Wenn Sie Fragezeichen verwenden, müssen die Parameter in der nachfolgend gezeigten Reihenfolge stehen und sind nur dann optional, wenn keine nachfolgenden Parameter angegeben wurden (z.B. müssen Sie Parameter 1 verwenden, wenn Sie Parameter 2 verwenden möchten). Wenn Sie benannte Parameter verwenden, können Sie beliebige Teilmengen der Parameter in beliebiger Reihenfolge angeben.

Parametername für SQL-Skripten

Beschreibung

Reihenfolge

s.action_code

INTEGER. Dies ist ein INOUT-Parameter. Dieser Parameter ist obligatorisch.

1

s.error_code

INTEGER.

2

s.error_message

TEXT.

3

s.remote_id VARCHAR(128). Die entfernte ID von MobiLink. Sie können die entfernte ID nur dann referenzieren, wenn Sie benannte Parameter verwenden. Nicht anwendbar

s.username

VARCHAR(128). Der MobiLink-Benutzername

4

s.table

VARCHAR(128).

5

Standardaktion

Keine.

Bemerkungen

Mit diesem Skript können Sie Fehler protokollieren und die vom handle_error-Skript ausgewählten Aktionen aufzeichnen. Dieses Skript wird nach dem Ereignis handle_error ausgeführt, unabhängig davon, ob ein handle_error-Skript definiert wurde. Es wird immer in einer eigenen Transaktion und in einer anderen Datenbankverbindung ausgeführt als die Synchronisationsverbindung (Verwaltungs- bzw. Informationsverbindung).

Anhand des Fehlercodes und der Fehlermeldung können Sie die Art des Fehlers bestimmen. Dies ist der vom letzten Aufruf eines Fehlerbehandlungsskripts zurückgegebene Aktionscodewert für den SQL-Vorgang, der den aktuellen Fehler verursacht hat.

Wenn der Fehler als Teil der Synchronisation aufgetreten ist, wird der Benutzername geliefert. Andernfalls ist dieser Wert NULL.

Ist der Fehler aufgetreten, während eine bestimmte Tabelle bearbeitet wurde, wird der Tabellenname geliefert. Andernfalls ist dieser Wert NULL. Der Tabellenname ist der Name einer Tabelle in der entfernten Datenbank. Dieser Name kann eine direkte Entsprechung in der konsolidierten Datenbank haben, abhängig von der Planung des Synchronisationssystems.

Siehe auch
SQL-Beispiel

Das folgende Beispiel eignet sich für eine konsolidierte SQL Anywhere-Datenbank. Es fügt eine Zeile in eine Tabelle ein, um Synchronisationsfehler aufzuzeichnen.

CALL ml_add_connection_script(
 'ver1',
 'report_error',
 'INSERT INTO sync_error(
   action_code,
   error_code,
   error_message,
   user_name,
   table_name )
  VALUES ( 
   {ml s.action_code}, 
   {ml s.error_code}, 
   {ml s.error_message}, 
   {ml s.username}, 
   {ml s.table} )'  )
Java-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine Java-Methode namens reportError als das Skript für das Verbindungsereignis report_error, wenn die Skriptversion ver1 synchronisiert wird.

CALL ml_add_java_connection_script(
   'ver1',
   'report_error,
   'ExamplePackage.ExampleClass.reportError' )

Im Folgenden sehen Sie die Java-Beispielmethode reportError. Sie protokolliert den Fehler in einer Tabelle über die JDBC-Verbindung, die von MobiLink bereitgestellt wird. Sie setzt auch den Aktionscode.

public String reportError(
  ianywhere.ml.script.InOutInteger actionCode,
  int errorCode, 
  String errorMessage, 
  String user,
  String table )
  throws java.sql.SQLException {
   // Insert error information in a table,
   JDBCLogError( _syncConn, errorCode, errorMessage,
    user, table );
   actionCode.setValue( getActionCode( errorCode ) );
   return( null ); 
}
.NET-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine .NET-Methode namens ReportError als das Skript für das Verbindungsereignis report_error, wenn die Skriptversion ver1 synchronisiert wird.

CALL ml_add_dnet_connection_script(
   'ver1',
   'report_error,
   'TestScripts.Test.ReportError' )

Im Folgenden sehen Sie die .NET-Beispielmethode ReportError. Sie protokolliert unter Verwendung einer .NET-Methode den Fehler in einer Tabelle.

public string ReportError(
  ref int actionCode,
  int errorCode, 
  string errorMessage, 
  string user,
  string table ) {
  LogError(_syncConn, errorCode, errorMessage, user, table);
}