次の方法で共有


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
エヌテキスト nvarchar
sql_variant 列を複数の厳密に型指定された列に分割します。
table 一時テーブルに変換します。
タイムスタンプ datetime2CURRENT_TIMESTAMP 関数を使用するようにコードを修正します。 定数のみが既定値としてサポートされているため、current_timestampは既定の制約として定義できません。 タイムスタンプ型の列から行バージョンの値を移行する必要がある場合は、NOT NULL または NULL 行バージョンの値に BINARY(8) または VARBINARY(8) を使用します。
xml varchar
ユーザー定義型 可能な場合は、ネイティブ データ型に戻します。
既定値 既定値では、リテラルと定数のみがサポートされます。

次のステップ

テーブルの開発の詳細については、「 テーブルの概要」を参照してください。