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 服务器选项

 

-b 选项

对于 VARCHAR、CHAR、LONG VARCHAR 或 LONG CHAR 类型的列,请在同步过程中删除字符串的尾随空白。

语法
mlsrv11 -c "connection-string" -b ...
注释
注意

建议在统一数据库中使用 VARCHAR 而不是 CHAR,这样就不会出现此问题。

此选项帮助消除 SQL Anywhere CHAR 数据类型和统一数据库所使用的 CHAR 或 VARCHAR 数据类型之间的差异。SQL Anywhere CHAR 数据类型等效于 VARCHAR。但是,在大多数非 SQL Anywhere 统一数据库中,CHAR(n) 数据类型会填充空白以达到 n 个字符。

指定 -b 选项后,如果远程数据库上的列是一个字符串,那么对于 CHAR、VARCHAR、LONG CHAR 或 LONG VARCHAR 类型的列,MobiLink 服务器将删除字符串的尾随空白。此操作在过滤当前同步过程中上载的行之前进行。随后将剪裁的数据下载到远程数据库中。

此选项也可用来检测冲突的更新。对于每个上载更新行,MobiLink 服务器会针对给定的主键从统一数据库中读取行,将该行与更新的前映像进行比较,然后确定更新是否为冲突的更新。如果使用 -b,MobiLink 会在进行比较之前从 CHAR、VARCHAR、LONG CHAR 或 LONG VARCHAR 类型的列中剪裁尾随空白。

另请参见
示例

如果不使用 -b 选项,那么从 SQL Anywhere 或 UltraLite 远程数据库上载到统一数据库的 CHAR(10) 列中的 'abc' 主键值将变成后面带有 7 个空格的 'abc'。如果下载了同一行,则它在远程数据库中显示为后面带有 7 个空格的 'abc'。远程数据库在未用空白填充的情况下包含两行:后面都带有 7 个空格的两个 'abc' 行。此时,远程数据库中有一个重复的行。

如果使用 -b 选项,那么从 SQL Anywhere 或 UltraLite 远程数据库上载到统一数据库的 CHAR(10) 列中的 'abc' 主键值将变成后面带有 7 个空格的 'abc'。7 个空格仍会将该值填充至 10 个字符,但如果下载了同一行,MobiLink 服务器会去掉尾随空白,该值在远程数据库中显示为 'abc'。-b 选项可以修正重复行的问题。