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

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link リファレンス » リモート・データベースと統合データベース間での Mobile Link データ・マッピング

 

Microsoft SQL Server データのマッピング

Microsoft SQL Server の統合データ型へのマッピング

次の表は、SQL Anywhere および Ultra Light のリモート・データ型がどのように Microsoft SQL Server の統合データ型にマッピングされるのかを示します。たとえば、リモート・データベースの DATE 型のカラムは、統合データベースでは DATETIME 型である必要があります。

SQL Anywhere または Ultra Light のデータ型

Microsoft SQL Server データ型

注意

BIGINT

BIGINT

BINARY(n<=8000)

VARBINARY(n)

BINARY(n>8000)

VARBINARY(MAX)

BIT

BIT

CHAR(n<=8000)

VARCHAR(n)

CHAR(n>8000)

VARCHAR(MAX)

DATE

DATE

DATETIME

DATETIME2

SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。

DECIMAL(p=<38,s)

DECIMAL(p,s)

SQL Server の DECIMAL/NUMERIC の精度は 1 ~ 38 なので、p は 39 より小さい必要があります。

DECIMAL(p>38,s)

SQL Server のデータ型に対応するデータ型がありません。

DOUBLE

FLOAT(53)

FLOAT(p)

FLOAT(p)

IMAGE

VARBINARY(MAX)

INTEGER

INT

LONG BINARY

VARBINARY(MAX)

LONG NVARCHAR

NVARCHAR(MAX)

LONG VARBIT

VARCHAR(MAX)

LONG VARCHAR

VARCHAR(MAX)

MONEY

MONEY

NCHAR(n<=4000)

NVARCHAR(c)

NCHAR(n>4000)

NVARCHAR(MAX)

NTEXT

NVARCHAR(MAX)

NUMERIC(p=<38,s)

NUMERIC(p,s)

SQL Server の DECIMAL/NUMERIC の精度は 1 ~ 38 なので、p は 39 より小さい必要があります。

NUMERIC(p>38,s)

SQL Server のデータ型に対応するデータ型がありません。

NVARCHAR(n<=4000)

NVARCHAR(c)

NVARCHAR(n>4000)

NVARCHAR(MAX)

REAL

REAL

SMALLDATETIME

SMALLDATETIME

SQL Anywhere と Ultra Light の SMALLDATETIME は TIMESTAMP として実装されます。SQL Server の SMALLDATETIME は分の精度です。29.998 秒以下の値は直近の分に切り捨てられます。29.999 秒以上の値は直近の分に切り上げられます。SQL Anywhere と Ultra Light の SMALLDATETIME はミリ秒の精度です。正常に同期させるには、SQL Anywhere または Ultra Light の SMALLDATETIME の丸め単位を分にしてください。年は、1900 ~ 2078 の範囲内である必要があります。

SMALLINT

SMALLINT

SMALLMONEY

SMALLMONEY

TEXT

VARCHAR(MAX)

TIME

TIME

SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。

TIMESTAMP

DATETIME2

SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。

TINYINT

TINYINT

ダウンロードの場合、値は負でない必要があります。

UNIQUEIDENTIFIER

UNIQUEIDENTIFIER

UNIQUEIDENTIFIERSTR

UNIQUEIDENTIFIER

UNSIGNED BIGINT

NUMERIC(20)

ダウンロードの場合、値は負でない必要があります。

UNSIGNED INTEGER

NUMERIC(11)

ダウンロードの場合、値は負でない必要があります。

UNSIGNED TINYINT

TINYINT

ダウンロードの場合、値は負でない必要があります。

UNSIGNED SMALLINT

INT

ダウンロードの場合、値は負でない必要があります。

VARBINARY(n<=8000)

VARBINARY(n)

VARBINARY(n>8000)

VARBINARY(MAX)

VARBIT(n<=8000)

VARCHAR(n)

VARBIT(n>8000)

VARCHAR(MAX)

VARCHAR(n<=8000)

VARCHAR(c)

VARCHAR(n>8000)

VARCHAR(MAX)

XML

XML または VARCHAR(MAX)

SQL Server 2005 の場合は、XML を使用します。それ以外のバージョンの場合は、VARCHAR(MAX) を使用します。

SQL Anywhere または Ultra Light のリモート・データ型へのマッピング

次の表は、Microsoft SQL Server の統合データ型がどのように SQL Anywhere および Ultra Light のリモート・データ型にマッピングされるのかを示します。たとえば、リモート・データベースの TEXT 型のカラムは、統合データベースでは LONG VARCHAR 型である必要があります。

Microsoft SQL Server データ型 SQL Anywhere または Ultra Light のデータ型 注意

BIGINT

BIGINT

BINARY(n)

BINARY(n)

BIT

BIT

CHAR(n)

VARCHAR(n)

Microsoft SQL Server の CHAR カラムは、ブランクが埋め込まれます。SQL Anywhere の CHAR カラムは、デフォルトではブランクが埋め込まれず、VARCHAR カラムと同等になります。そのため、Microsoft SQL Server の同期テーブルでは CHAR データ型の使用を避けるようにしてください。Microsoft SQL Server 統合データベースで CHAR データ型を使用する必要がある場合は、SQL Anywhere の CHAR と SQL Anywhere 以外の CHAR との違いを解決できるように、-b コマンド・ライン・オプションを指定して Mobile Link サーバを実行してください。

DATE

DATE

DATETIME

TIMESTAMP または DATETIME

SQL Server の DATETIME 値は 1/300 秒の精度です。小数点以下の秒の末尾の数字は 0、3、6 のいずれかになります。その他の数字はこの 3 つのいずれかに丸められます。具体的には、0 と 1 は 0 に、2 と 3 と 4 は 3 に、5 と 6 と 7 と 8 は 6 に、9 は 10 に丸められます。ダウンロード時には、SQL Anywhere は SQL Server からの元の値を保持しますが、アップロード時には、値は元の値と完全には一致しないことがあります。DATETIME をプライマリ・キーに使用すると、競合を解決できないことがあります。DATETIME を正常に同期させるには、秒の小数点以下の丸め単位を 10 ミリ秒にすることをおすすめします。年は、1753 ~ 9999 の範囲内である必要があります。

DATETIME2

TIMESTAMP

SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。

DECIMAL(p,s)

DECIMAL(p,s)

FLOAT(p)

FLOAT(p)

IMAGE

LONG BINARY

INT

INT

MONEY

MONEY

NCHAR(n)

NVARCHAR(c)

Ultra Light では使用できません。

SQL Anywhere の NCHAR は、SQL Anywhere 以外のデータベースの NCHAR と同等ではありません。SQL Anywhere の NCHAR に対応するのは NVARCHAR です。同期される統合データベースのカラムでは、NCHAR を使用しないでください。SQL Anywhere 以外の NCHAR を使用する必要がある場合は、-b オプションを指定して Mobile Link サーバを実行してください。

NTEXT

LONG NVARCHAR

Ultra Light では使用できません。

NVARCHAR(c)

NVARCHAR(c)

Ultra Light では使用できません。

NVARCHAR(MAX)

LONG NVARCHAR

NUMERIC(p,s)

NUMERIC(p,s)

REAL

REAL

REAL はあいまいな値なので、統合データベースとリモート・データベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリ・キーの一部として使用しないでください。

SMALLDATETIME

SMALLDATETIME

SQL Anywhere と Ultra Light の SMALLDATETIME は TIMESTAMP として実装されます。SQL Server の SMALLDATETIME は分の精度です。29.998 秒以下の値は直近の分に切り捨てられます。29.999 秒以上の値は直近の分に切り上げられます。SQL Anywhere と Ultra Light の SMALLDATETIME はミリ秒の精度です。正常に同期させるには、SQL Anywhere または Ultra Light の SMALLDATETIME の丸め単位を分にしてください。年は、1900 ~ 2078 の範囲内である必要があります。

SMALLINT

SMALLINT

SMALLMONEY

SMALLMONEY

TEXT

LONG VARCHAR

TIME

TIME

SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。

TIMESTAMP

VARBINARY(8)

Microsoft SQL Server 内では、TIMESTAMP はローが変更されるたびに増分されるバイナリ・カウンタです。各テーブルに存在できる TIMESTAMP カラムは 1 つのみであるため、TIMESTAMP カラムを同期する意味はありません。同期に含める必要がある場合は、SQL Anywhere または Ultra Light の VARBINARY(8) データ型にマッピングします。

このタイムスタンプ・カラムはサーバによって維持されるため、明示的に挿入および更新することはできません。このようなカラムがあるテーブルのアップロード・スクリプトを実装する場合は、このことを念頭に置いてください。

TINYINT

TINYINT

UNIQUEIDENTIFIER

UNIQUEIDENTIFIER

VARBINARY(n)

VARBINARY(n)

VARBINARY(MAX)

LONG BINARY

VARCHAR(n)

VARCHAR(n)

VARCHAR(MAX)

LONG VARCHAR

XML

XML