VARCHAR、CHAR、LONG VARCHAR、または LONG CHAR 型のカラムの場合、同期中に文字列から後続ブランクを削除します。
mlsrv11 -c "connection-string" -b ...
この問題が発生しないように、統合データベースで CHAR の代わりに VARCHAR を使用することをおすすめします。
このオプションを使用すると、SQL Anywhere の CHAR データ型と統合データベースが使用する CHAR または VARCHAR データ型の違いを解決できます。SQL Anywhere の CHAR データ型は VARCHAR と同じです。しかし、SQL Anywhere ではないほとんどの統合データベースで、CHAR(n) データ型は n 文字までブランクが埋め込まれます。
-b が指定されていると、Mobile Link サーバは、リモートのカラムが文字列の場合に CHAR、VARCHAR、LONG CHAR、または LONG VARCHAR 型のカラムに対して文字列から後続ブランクを削除します。これを実行した後に、現在の同期でアップロードされたローをフィルタします。トリムされたデータは、次にリモート・データベースへダウンロードされます。
このオプションは、競合する更新を検出するためにも使用できます。各アップロード更新ローに対して、Mobile Link サーバは統合データベースから指定されたプライマリ・キーのローをフェッチし、そのローを更新前イメージと比較して、この更新が競合する更新であるかどうかを判断します。-b を使用する場合、Mobile Link は CHAR、VARCHAR、LONG CHAR、または LONG VARCHAR 型のカラムから後続ブランクをトリムしてから、この比較を行います。
-b オプションを使用しない場合、SQL Anywhere または Ultra Light リモートから統合データベースの CHAR(10) カラムにアップロードされるプライマリ・キー値 'abc' は、'abc' の後に 7 個のブランク・スペースが続く値になります。同じローがダウンロードされると、リモートでは 'abc' の後に 7 個のブランク・スペースが続く値として扱われます。リモート・データベースがブランクを埋め込まない場合、リモートは 2 つのローを格納します。それは、'abc' というローと 'abc' の後に 7 個のブランク・スペースが続くローです。これで、リモートで重複するローが存在することになります。
-b オプションを使用する場合、SQL Anywhere または Ultra Light リモートから統合データベースの CHAR(10) カラムにアップロードされるプライマリ・キー値 'abc' は、'abc' の後に 7 個のスペースが続く値になります。7 個のスペースが埋め込まれた値は 10 個の文字になりますが、同じローがダウンロードされるときに Mobile Link サーバは後続のスペースを削除するため、その値はリモートでは 'abc' として扱われます。このように、-b オプションは重複するローの問題を修正します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |