Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » 使用 MobiLink 服务器技术 » MobiLink 统一数据库

 

Microsoft SQL Server 统一数据库

将 Microsoft SQL Server 设置为统一数据库
注意

运行安装脚本的数据库用户必须能够创建表、触发器和存储过程,因此必须具备 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 服务器系统表

ODBC 驱动程序

必须使用随附于 SQL Server 数据库的 ODBC 驱动程序为 SQL Server 统一数据库设置 ODBC DSN。请参见:

SQL Server 问题
  • 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 隔离级别