为特定表提供有关上载操作的同步统计信息的访问权限。
在下表中,说明部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。 请参见SQL-Java 数据类型和SQL-.NET 数据类型。
在 SQL 脚本中,可以按名称或使用问号指定事件参数。不建议使用问号,建议您使用命名参数。不能在一个脚本中混合使用名称和问号。如果使用问号,则参数必须按照如下所示的顺序并且仅当没有指定任何后继参数时才是可选的(例如,如果您想使用参数 2,则必须使用参数 1)。如果使用命名参数,则可以按照任何顺序指定任意参数子集。
SQL 脚本的参数名称 | 说明 | 顺序(不建议用于 SQL) |
---|---|---|
s.remote_id | VARCHAR(128)。MobiLink 远程 ID。只有在使用命名参数时才能引用远程 ID。 | 不适用 |
s.script_version | VARCHAR(128)。可选的 IN 参数,可指定 MobiLink 服务器将用于当前同步的脚本版本字符串传递到此参数。不能使用问号指定此参数。 | 不适用 |
s.username |
VARCHAR(128)。MobiLink 用户名。 |
1 |
s.table |
VARCHAR(128)。表名。 |
2 |
s.warnings |
INTEGER。表上载过程中发出的警告的数目。 |
3 |
s.errors |
INTEGER。表上载过程中发生的错误的数目,包括已处理的错误。 |
4 |
s.inserted_rows |
INTEGER。成功插入到统一数据库中的行数。 |
5 |
s.deleted_rows |
INTEGER。从统一数据库中成功删除的行数。 |
6 |
s.updated_rows |
INTEGER。在统一数据库中成功更新的行数。 |
7 |
s.conflicted_updates |
INTEGER。导致冲突的更新行数目。仅当对某行成功调用了解决冲突脚本时才包括该行。 |
10 |
s.ignored_inserts |
INTEGER。忽略的上载插入行总数。它们被忽略的原因是:1) 在正常模式中没有 upload_insert 脚本,2) MobiLink 服务器调用相应脚本时出现了错误并且 handle_error 或 handle_odbc_error 事件返回 1000。 |
11 |
s.ignored_deletes |
INTEGER。如果定义了 handle_error 或 handle_odbc_error 并返回 1000 或者对给定表没有定义 upload_delete 脚本,当调用 upload_delete 脚本时导致出错的上载删除行数。 |
12 |
s.ignored_updates |
INTEGER。导致冲突但冲突解决脚本未能成功调用或者未定义 upload_update 脚本的上载更新行数。 |
13 |
s.bytes |
INTEGER。MobiLink 服务器内用来存储上载的内存量。 |
14 |
s.deadlocks |
INTEGER。统一数据库中为同步检测到的死锁数。 |
15 |
无。
upload_statistics 事件可用于为所有用户收集有关同步事件(当它们应用于任何表时)的重要统计信息。upload_statistics 表脚本紧接在上载事务结束时执行提交操作之前被调用。
并不是所有警告都被记录下来,是否记录取决于命令行。传递到该脚本的警告计数是在未禁用任何警告时将被记录的警告的数量,该数量可能大于已记录警告的数量。
以下示例在用于跟踪上载统计信息的表中插入一行。
CALL ml_add_connection_script( 'ver1', 'upload_statistics', 'INSERT INTO my_upload_statistics ( user_name, table_name, num_warnings, num_errors, inserted_rows, deleted_rows, updated_rows, conflicted_updates, ignored_inserts, ignored_deletes, ignored_updates, bytes, deadlocks ) VALUES( {ml s.username}, {ml s.table}, {ml s.warnings}, {ml s.errors}, {ml s.inserted_rows}, {ml s.deleted_rows}, {ml s.updated_rows}, {ml s.conflicted_updates}, {ml s.ignored_inserts}, {ml s.ignored_deletes}, {ml s.ignored_updates}, {ml s.bytes}, {ml s.deadlocks} )' ) |
以下示例在 Oracle 统一数据库中运行。
CALL ml_add_connection_script( 'ver1', 'upload_statistics', 'INSERT INTO upload_tables_audit ( id, user_name, table, warnings, errors, inserted_rows, deleted_rows, updated_rows, conflicted_updates, ignored_inserts, ignored_deletes, ignored_updates, bytes, deadlocks ) VALUES ( ut_audit.nextval, {ml s.username}, {ml s.table}, {ml s.warnings}, {ml s.errors}, {ml s.inserted_rows}, {ml s.deleted_rows}, {ml s.updated_rows}, {ml s.conflicted_updates}, {ml s.ignored_inserts}, {ml s.ignored_deletes}, {ml s.ignored_updates}, {ml s.bytes}, {ml s.deadlocks} )' ) |
在审计表中插入统计信息之后,您将可以使用这些统计信息监控同步过程,并在条件允许时进行优化。
以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 uploadStatisticsTable 的 Java 方法注册为 upload_statistics 表事件的脚本。
CALL ml_add_java_table_script( 'ver1', 'table1', 'upload_statistics', 'ExamplePackage.ExampleClass.uploadStatisticsTable' ) |
以下是 Java 方法 uploadStatisticsTable 示例。它将某些统计信息记录到 MobiLink 消息日志。(将统计信息记录到 MobiLink 消息日志在开发时可能会有帮助,但会降低生产服务器的性能。)
package ExamplePackage; public class ExampleClass { String _curUser = null; public void uploadStatisticsTable( String user, String table, int warnings, int errors, int insertedRows, int deletedRows, int updatedRows, int conflictedInserts, int conflictedDeletes, int conflictedUpdates, int ignoredInserts, int ignoredDeletes, int ignoredUpdates, int bytes, int deadlocks ) { java.lang.System.out.println( "updated rows: " + updatedRows ); } |
以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 和表 table1 时将名为 UploadTableStats 的 .NET 方法注册为 upload_statistics 表事件的脚本。
CALL ml_add_dnet_table_script( 'ver1', 'table1', 'upload_statistics', 'TestScripts.Test.UploadTableStats' ) |
以下是 .NET 方法 uploadStatisticsTable 示例。它将某些统计信息记录到 MobiLink 消息日志。(将统计信息记录到 MobiLink 消息日志在开发时可能会有帮助,但会降低生产服务器的性能。)
namespace TestScripts { public class Test { string _curUser = null; public void UploadTableStats( string user, string table, int warnings, int errors, int insertedRows, int deletedRows, int updatedRows, int conflictInserts, int conflictDeletes, int conflictUpdates, int ignoredInserts, int ignoredDeletes, int ignoredUpdates, int bytes, int deadlocks ) { System.Console.WriteLine( "updated rows: " + updatedRows ); }}} |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |