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 |
ユーザー定義型 | 可能な場合は、ネイティブ データ型に戻します。 |
既定値 | 既定値では、リテラルと定数のみがサポートされます。 |
次のステップ
テーブルの開発に関する詳細については、テーブルの概要に関するページを参照してください。