次の表は、SQL Anywhere および Ultra Light のリモートデータ型がどのように Microsoft SQL Server の統合データ型にマッピングされるのかを示します。たとえば、リモートデータベースの DATETIME 型のカラムは、統合データベースではDATETIME2 型である必要があります。
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 |
Microsoft SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。 |
DECIMAL(p=<38,s) |
DECIMAL(p,s) |
Microsoft SQL Server の DECIMAL/NUMERIC の精度は 1 ~ 38 なので、p は 39 より小さい必要があります。 |
DECIMAL(p>38,s) |
Microsoft 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) |
Microsoft SQL Server の DECIMAL/NUMERIC の精度は 1 ~ 38 なので、p は 39 より小さい必要があります。 |
NUMERIC(p>38,s) |
Microsoft SQL Server には対応するデータ型がありません。 |
|
NVARCHAR(n<=4000) |
NVARCHAR(c) |
|
NVARCHAR(n>4000) |
NVARCHAR(MAX) |
|
REAL |
REAL |
|
SMALLDATETIME |
SMALLDATETIME |
SQL Anywhere と Ultra Light の SMALLDATETIME は TIMESTAMP として実装されます。Microsoft SQL Server の SMALLDATETIME は分の精度です。29.998 秒以下の値は直近の分に切り捨てられます。29.999 秒以上の値は直近の分に切り上げられます。SQL Anywhere と Ultra Light の SMALLDATETIME はミリ秒の精度です。正常に同期させるには、SQL Anywhere または Ultra Light の SMALLDATETIME の丸め単位を分にしてください。年は、1900 ~ 2078 の範囲内である必要があります。 |
SMALLINT |
SMALLINT |
|
SMALLMONEY |
SMALLMONEY |
|
ST_GEOMETRY |
GEOMETRY |
|
TEXT |
VARCHAR(MAX) |
|
TIME |
TIME |
Microsoft SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。 |
TIMESTAMP |
DATETIME2 |
Microsoft SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。 |
TIMESTAMP WITH TIME ZONE | DATETIMEOFFSET | |
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) |
Microsoft SQL Server 2005 の場合は、XML を使用します。それ以外のバージョンの場合は、VARCHAR(MAX) を使用します。 |
次の表は、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 |
Microsoft 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 |
Microsoft SQL Server の DATETIME2 値と TIME 値は、100 ナノ秒の精度です。ただし TIMESTAMP 値と TIME 値は、1 マイクロ秒の精度しかありません。DATETIME2 と TIME を正常に同期させるには、秒の小数点以下の丸め単位を 1 マイクロ秒にすることをおすすめします。 |
DECIMAL(p,s) |
DECIMAL(p,s) |
|
FLOAT(p) |
FLOAT(p) |
|
GEOMETRY |
ST_GEOMETRY | |
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 |
Ultra Light では使用できません。 |
NUMERIC(p,s) |
NUMERIC(p,s) |
|
REAL |
REAL |
REAL はあいまいな値なので、統合データベースとリモートデータベースとで厳密に同じ値を使用できない場合、問題を引き起こすことがあります。取り得るすべての値がテスト済みであるわけではないので、注意が必要です。問題の発生を回避するため、このような型をプライマリキーの一部として使用しないでください。 |
SMALLDATETIME |
SMALLDATETIME |
SQL Anywhere と Ultra Light の SMALLDATETIME は TIMESTAMP として実装されます。Microsoft 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 |
Microsoft 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) データ型にマッピングします。 この TIMESTAMP カラムはサーバーによって維持されるため、明示的に挿入および更新することはできません。このようなカラムがあるテーブルのアップロードスクリプトを実装する場合は、このことを念頭に置いてください。 |
DATETIMEOFFSET | TIMESTAMP WITH TIME ZONE | |
TINYINT |
TINYINT |
|
UNIQUEIDENTIFIER |
UNIQUEIDENTIFIER |
|
VARBINARY(n) |
VARBINARY(n) |
|
VARBINARY(MAX) |
LONG BINARY |
|
VARCHAR(n) |
VARCHAR(n) |
|
VARCHAR(MAX) |
LONG VARCHAR |
|
XML |
XML |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |