Azure Synapse Analytics の専用 SQL プール (旧称 SQL DW) のテーブルのデータ型

この記事では、専用 SQL プールでテーブルのデータ型を定義する場合のレコメンデーションについて説明します。

サポートされるデータ型

専用 SQL プール (旧称 SQL DW) を使用すると、一般的に使用されるほとんどのデータ型がサポートされます。 サポートされるデータ型の一覧については、CREATE TABLE ステートメントのデータ型を参照してください。

行の長さを最小化する

データ型のサイズを最小化すると、行の長さが短くなり、クエリのパフォーマンスの向上につながります。 データに適した最小のデータ型を使用します。

  • 既定の長さで文字列を定義しないようにしてください。 たとえば、最長値が 25 文字の場合は、列を VARCHAR(25) として定義します。
  • VARCHAR のみが必要な場合は、NVARCHAR を使用しないようにしてください。
  • 可能であれば、NVARCHAR(MAX) または VARCHAR(MAX) の代わりに、NVARCHAR(4000) または VARCHAR(8000) を使用します。

テーブルの読み込みに PolyBase 外部テーブルを使用している場合は、テーブル行の定義された長さが 1 MB を超えることはできません。 可変長データを含む行が 1 MB を超える場合、BCP で行を読み込めますが、PolyBase では読み込めません。

サポートされていないデータ型を識別する

データベースを別の SQL データベースから移行する場合は、データ型が専用 SQL プールでサポートされていない可能性があります。 既存の SQL スキーマでサポートされていないデータ型を検出するには、次のクエリを使用します。

SELECT  t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables  t
JOIN sys.columns c on t.[object_id]    = c.[object_id]
JOIN sys.types   y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
 AND  y.[is_user_defined] = 1;

サポートされていないデータ型の対処法

次のリストには、専用 SQL プール (旧称 SQL DW) でサポートされていないデータ型と、サポートされていないデータ型の代わりに使用できるものが示されています。

サポートされていないデータ型 回避策
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
image varbinary
text varchar
ntext nvarchar
sql_variant 列を厳密に型指定された複数の列に分割します。
テーブル 一時テーブルに変換します。
timestamp datetime2 および CURRENT_TIMESTAMP 関数を使用するように、コードを再作成します。 定数のみが既定値としてサポートされているため、current_timestamp を既定の制約として定義できません。 timestamp で型指定された列から行バージョンの値を移行する必要がある場合は、行バージョンの値 NOT NULL または NULL に BINARY(8) または VARBINARY(8) を使用します。
xml varchar
ユーザー定義型 可能な場合は、ネイティブ データ型に戻します。
既定値 既定値では、リテラルと定数のみがサポートされます。

次のステップ

テーブルの開発に関する詳細については、テーブルの概要に関するページを参照してください。