运行安装脚本的数据库用户必须能够创建表、触发器和存储过程,因此必须具备 db_owner 角色。
要设置 Microsoft SQL Server 用作 MobiLink 统一数据库,必须运行设置过程,此过程将添加 MobiLink 同步所需的 MobiLink 系统表、存储过程、触发器和视图。可通过多种方法实现这一点:
运行 syncmss.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。
在 Sybase Central 的 MobiLink 插件中,选择 [模式] » [管理];连接到服务器数据库;右击数据库名并选择 [检查 MobiLink 系统设置]。如果需要对您的数据库进行设置,系统将提示您继续。如果想使用一个现有的 MobiLink 系统设置,则 default_schema 应该为 MobiLink 系统设置的模式。
使用 [创建同步模型向导] 或 [部署同步模型向导] 时,将在连接到服务器数据库时检查系统设置。如果需要对您的数据库进行设置,系统将提示您继续。
运行安装脚本的数据库用户是具有更改 MobiLink 系统表权限的唯一用户,这是配置 MobiLink 应用程序所必需的。请参见所需权限。
MobiLink 服务器用于连接统一数据库的 RDBMS 用户必须能够使用 MobiLink 系统表、过程等,但不能使用任何限定符(例如,SELECT * from ml_user)。请参见MobiLink 服务器系统表。
必须使用随附于 SQL Server 数据库的 ODBC 驱动程序为 SQL Server 统一数据库设置 ODBC DSN。请参见:
SET NOCOUNT ON 对于 Microsoft SQL Server,应将 SET NOCOUNT ON 指定为所有存储过程或通过 ODBC 执行的 SQL 批处理中的第一个语句。缺少此选项,网络缓冲区可能溢出,结果以静默方式丢失数据。这被称为 SQL Server 问题。
过程调用 Microsoft SQL Server 要求使用 ODBC 语法编写带有参数的过程调用:
{ CALL procedure_name( {ml param1}, {ml param2}, ... ) } |
CHAR 列 在 Microsoft SQL Server 中,CHAR 数据类型长度固定并填充空白以达到字符串的全长。在 MobiLink 远程数据库(SQL Anywhere 或 UltraLite)中,CHAR 与 VARCHAR 相同:值不填充空白以达到固定宽度。我们强烈建议在统一数据库中使用 VARCHAR 而不是 CHAR。如果必须使用 CHAR,在同步过程中可以使用 mlsrv11 -b 命令行选项删除字符串的尾随空白。此选项对于用于检测冲突的字符串比较十分重要。
请参见-b 选项。
数据类型映射 列的数据类型必须在统一数据库和远程数据库之间正确映射。有关详细信息,请参见Microsoft SQL Server 数据映射。
示例数据库问题 SQL 服务器 AdventureWorks 示例数据库包含计算列。您无法同步计算列。可以将列设置为仅下载,或从同步中排除该列。
在 upload_update 脚本中实现冲突检测 SQL Server NOCOUNT 选项的行为表示 MobiLink 服务器在某些时候不能准确地评估出上载脚本更改了多少行。对于 SQL Server,在 upload_update 脚本中实现存储过程的冲突检测会更安全。
请参见MobiLink 隔离级别。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |