SnowConvert AI - SQL Server-Azure Synapse - システムテーブル¶
Transact-SQL システムテーブルの翻訳仕様
システムテーブル¶
Transact-SQL |
Snowflake SQL |
メモ |
|
|---|---|---|---|
SYS.ALL_VIEWS |
INFORMATION_SCHEMA.VIEWS |
||
SYS.ALL_COLUMNS |
INFORMATION_SCHEMA.COLUMNS |
||
SYS.COLUMNS |
INFORMATION_SCHEMA.COLUMNS |
||
SYS.OBJECTS |
INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
||
SYS.PROCEDURES |
INFORMATION_SCHEMA.PROCEDURES |
||
SYS.SEQUENCES |
INFORMATION_SCHEMA.SEQUENCES |
||
SYS.ALL_OBJECTS |
INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
||
ALL_PARAMETERS |
サポート対象外 |
||
SYS.ALL_SQL_MODULES |
サポート対象外 |
||
SYS.ALLOCATION_UNITS |
サポート対象外 |
||
SYS.ASSEMBLY_MODULES |
サポート対象外 |
||
SYS.CHECK_CONSTRAINTS |
サポート対象外 |
||
SYS.COLUMN_STORE_DICTIONARIES |
サポート対象外 |
||
SYS.COLUMN_STORE_ROW_GROUPS |
サポート対象外 |
||
SYS.COLUMN_STORE_SEGMENTS |
サポート対象外 |
||
SYS.COMPUTED_COLUMNS |
サポート対象外 |
||
SYS.DEFAULT_CONSTRAINTS |
サポート対象外 |
||
SYS.EVENTS |
サポート対象外 |
||
SYS.EVENT_NOTIFICATIONS |
サポート対象外 |
||
SYS.EVENT_NOTIFICATION_EVENT_TYPES |
サポート対象外 |
||
SYS.EXTENDED_PROCEDURES |
サポート対象外 |
||
SYS.EXTERNAL_LANGUAGE_FILES |
サポート対象外 |
||
SYS.EXTERNAL_LANGUAGES |
サポート対象外 |
||
SYS.EXTERNAL_LIBRARIES |
サポート対象外 |
||
SYS.EXTERNAL_LIBRARY_FILES |
サポート対象外 |
||
SYS.FOREIGN_KEYS |
INFORMATION_SCHEMA.TABLE_CONSTRAINTS |
||
SYS.FOREIGN_KEY_COLUMNS |
サポート対象外 |
||
SYS.FUNCTION_ORDER_COLUMNS |
サポート対象外 |
||
SYS.HASH_INDEXES |
サポート対象外 |
||
SYS.INDEXES |
サポート対象外 |
||
SYS.INDEX_COLUMNS |
サポート対象外 |
||
SYS.INDEX_RESUMABLE_OPERATIONS |
サポート対象外 |
||
SYS.INTERNAL_PARTITIONS |
サポート対象外 |
||
SYS.INTERNAL_TABLES |
サポート対象外 |
||
SYS.KEY_CONSTRAINTS |
サポート対象外 |
||
SYS.MASKED_COLUMNS |
サポート対象外 |
||
SYS.MEMORY_OPTIMIZED_TABLES_INTERNAL_ATTRIBUTES |
サポート対象外 |
||
SYS.MODULE_ASSEMBLY_USAGES |
サポート対象外 |
||
SYS.NUMBERED_PROCEDURES |
サポート対象外 |
||
SYS.NUMBERED_PROCEDURE_PARAMETERS |
サポート対象外 |
||
SYS.PARAMETERS |
サポート対象外 |
||
SYS.PARTITIONS |
サポート対象外 |
||
SYS.PERIODS |
サポート対象外 |
||
SYS.SERVER_ASSEMBLY_MODULES |
サポート対象外 |
||
SYS.SERVER_EVENTS |
サポート対象外 |
||
SYS.SERVER_EVENT_NOTIFICATIONS |
サポート対象外 |
||
SYS.SERVER_SQL_MODULE |
サポート対象外 |
||
SYS.SERVER_TRIGGERS |
サポート対象外 |
||
SYS._SERVER_TRIGGER_EVENTS |
サポート対象外 |
||
SYS.SQL_DEPENDENCIES |
サポート対象外 |
||
SYS.SQL_EXPRESSION_DEPENDENCIES |
サポート対象外 |
||
SYS.SQL_MODULES |
サポート対象外 |
||
SYS.STATS |
サポート対象外 |
||
SYS.STATS_COLUMNS |
サポート対象外 |
||
SYS.SYNONYMS |
サポート対象外 |
||
SYS.SYSTEM_COLUMNS |
サポート対象外 |
||
SYS.SYSTEM_OBJECTS |
サポート対象外 |
||
SYS.SYSTEM_PARAMETERS |
サポート対象外 |
||
SYS.SYSCONSTRAINTS |
INFORMATION_SCHEMA.TABLE_CONSTRAINTS |
||
SYS.SYSTEM_SQL_MODULES" |
サポート対象外 |
SYSCONSTRAINTS¶
Applies to
SQL Server
Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
The sysconstraints compatibility view maps constraint IDs to the objects and tables they belong to. It is a legacy system table from earlier SQL Server versions (SQL Server documentation).
SnowConvert AI transforms queries against sysconstraints (or sys.sysconstraints) into queries against Snowflake's INFORMATION_SCHEMA.TABLE_CONSTRAINTS. The transformation also rewrites common OBJECT_NAME() patterns:
sysconstraints pattern |
Snowflake equivalent |
|---|---|
|
|
|
|
When OBJECT_NAME() is called with an unrecognized argument or compared against a non-literal value, the expression is preserved and SSC-EWI-TS0104 is emitted.
サンプルソースパターン¶
1. Basic sysconstraints query¶
SQL Server¶
Snowflake¶
2. Qualified sys.sysconstraints¶
SQL Server¶
Snowflake¶
3. sysconstraints inside IF EXISTS with DROP CONSTRAINT¶
SQL Server¶
Snowflake¶
注釈
The WITH ( ONLINE = OFF ) clause is removed because Snowflake does not support index options on DROP CONSTRAINT. The IF EXISTS at the constraint level is also stripped because Snowflake does not support it in that position.
4. Unmapped argument emits EWI¶
SQL Server¶
Snowflake¶
既知の問題¶
1. Only OBJECT_NAME(constid) and OBJECT_NAME(id) are automatically mapped¶
Other arguments to OBJECT_NAME() inside sysconstraints queries cannot be automatically resolved and will emit SSC-EWI-TS0104.
2. Non-literal comparisons are not converted¶
If OBJECT_NAME() is compared to a column reference, variable, or expression (instead of a string literal), the expression is preserved with an EWI annotation.
3. JOIN statements with sysconstraints are not supported¶
Queries that join sysconstraints with other tables are not automatically translated.
SYS.FOREIGN_KEYS¶
Applies to
SQL Server
Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
FOREIGN KEY 制約であるオブジェクトごとの行を含みます(SQLServer ドキュメント)。
FOREIGN KEY (sys.foreign_keys)の列は以下の通りです。
列名 |
データ型 |
説明 |
Snowflakeに同等の列がある |
|---|---|---|---|
- |
このビューが継承する列のリストについては、 sys.objects (Transact-SQL). をご参照ください。 |
一部 |
|
referenced_object_id |
int |
参照されるオブジェクトの ID 。 |
無し |
key_index_id |
int |
参照オブジェクト内のキーインデックスの ID 。 |
無し |
is_disabled |
bit |
FOREIGN KEY 制約が無効です。 |
無し |
is_not_for_replication |
bit |
FOREIGN KEY 制約は、 NOT FOR REPLICATION オプションを使用して作成されました。 |
無し |
is_not_trusted |
bit |
FOREIGN KEY 制約がシステムによって検証されていません。 |
無し |
delete_referential_action |
tinyint |
削除が発生したときに、この FOREIGN KEY に対して宣言された参照アクション。SQLServer ドキュメント をご参照ください。 |
無し |
delete_referential_action_desc |
nvarchar(60) |
削除が発生したときに、この FOREIGN KEY に対して宣言された参照アクションの説明。SQLServer ドキュメント をご参照ください。 |
無し |
update_referential_action |
tinyint |
更新が発生したときに、この FOREIGN KEY に対して宣言された参照アクション。SQLServer ドキュメント をご参照ください。 |
無し |
update_referential_action_desc |
nvarchar(60) |
更新が発生したときに、この FOREIGN KEY に対して宣言された参照アクションの説明。SQLServer ドキュメント をご参照ください。 |
無し |
is_system_named |
bit |
1 = 名前がシステムによって生成されました。 |
無し |
sys.objects から継承される列は以下の通りです。
詳細は、 sys.objectsのドキュメント を参照してください。
列名 |
データ型 |
説明 |
Snowflakeに同等の列がある |
|---|---|---|---|
name |
sysname |
オブジェクト名。 |
有り |
object_id |
int |
オブジェクトの識別番号。データベース内で一意です。 |
無し |
principal_id |
int |
スキーマ所有者と異なる場合は、各所有者の ID 。 |
無し |
schema_id |
int |
オブジェクトが含まれるスキーマの ID 。 |
無し |
parent_object_id |
int |
このオブジェクトが属するオブジェクトの ID 。 |
無し |
type |
char(2) |
オブジェクト型 |
有り |
type_desc |
nvarchar(60) |
オブジェクト型の説明 |
有り |
create_date |
datetime |
オブジェクトが作成された日付。 |
有り |
modify_date |
datetime |
ALTER ステートメントを使用してオブジェクトが最後に変更された日付。 |
有り |
is_ms_shipped |
bit |
オブジェクトは、 SQL Serverの内部コンポーネントによって作成されます。 |
無し |
is_published |
bit |
オブジェクトは、 SQL Serverの内部コンポーネントによって作成されます。 |
無し |
is_schema_published |
bit |
オブジェクトのスキーマのみが公開されています。 |
無し |
警告
この場合、sys.foreign_keysについては、Snowflakeには同等のものがないことに注意してください。しかし、等価性はsys.objectsから継承された列の基になります。
適用可能な列の等価性¶
SQLServer |
Snowflake |
制限事項 |
適用可能 |
|---|---|---|---|
name |
CONSTRAINT_NAME |
データベースによって自動生成された名前は、ターゲットのSnowflakeの自動生成名に沿って確認されることがあります。 |
有り |
type |
CONSTRAINT_TYPE |
型列には様々なオプションがあります。しかし、この場合、サポートされるのは外部キーを表す'F'の文字だけです。 |
いいえ。すべてのテーブル制約の外部キーを判断するために追加の検証を行うため、適用できません。 |
type_desc |
CONSTRAINT_TYPE |
No limitations found. |
いいえ。すべてのテーブル制約の外部キーを判断するために追加の検証を行うため、適用できません。 |
create_date |
CREATED |
データ型の違い。 |
有り |
modify_date |
LAST_ALTERED |
データ型の違い。 |
有り |
parent_object_id |
CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, TABLE_NAME |
OBJECT_ID() 関数を使用するケースに対してのみ列が生成され、名前は有効なパターンを持ちます。 |
有り |
SQL Serverでの構文¶
Snowflakeの構文¶
注釈
システム外部キーの等価性は、Snowflakeのin ormation_schema.table_constraintsのカタログビューであるため、外部キー制約を他の制約から識別するには、追加の「WHERE」句で制約のタイプを定義する必要があります。
サンプルソースパターン¶
以下のサンプルを正しく実行するには、以下のステートメントを実行する必要があります。
SQL Server¶
Snowflake¶
1.単純な選択ケース¶
SQL Server¶
結果¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
1 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
結果¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
警告
列のオブジェクトの違いや等価性の欠落により、結果は異なります。結果を確認することができます。
2.名前列ケース¶
SQL Server¶
結果¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
1 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
結果¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
警告
This translation may require verification if the constraint name is auto-generated by the database and used in the query. For more information review the Known Issues section.
3.親オブジェクト ID ケース¶
この例では、異なる列と同等の列を作成するための名前の処理を例示するために、データベースとスキーマを作成しました。
SQL Server¶
結果¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
1 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
結果¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DATABASE_NAME_TEST |
SCHEMA_NAME_TEST |
FK_Name_Test |
DATABASE_NAME_TEST |
SCHEMA_NAME_TEST |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
警告
OBJECT_ID()関数の中に入ってくる名前が有効なパターンでない場合、特殊文字に対する名前処理の制限により変換されません。
警告
Snowflakeで使用されているデータベースを確認します。
4.型列ケース¶
SQL Serverの「F」は「外部キー」を意味し、すべてのテーブル制約から外部キーを指定するために、末尾の検証により削除されます。
SQL Server¶
結果¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
3 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
結果¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
5.型Desc列ケース¶
「type_desc」列は、すべてのテーブル制約から外部キーを指定するために、末尾の検証により削除されます。
SQL Server¶
結果¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
3 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
結果¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
6.日付列の変更の単純なケース¶
SQL Server¶
結果¶
Snowflake¶
結果¶
7.DATEDIFF()ケースによる日付列の変更¶
次の例は、sys.objectsから継承されたsys.foreign_keysの列が関数 DATEDIFF の中にある、より複雑なシナリオを示しています。この場合、該当する等価性に対応する引数は、Snowflakeのinformation.schemaの対応する列に変更されます。
SQL Server¶
結果¶
Snowflake¶
結果¶
8.日付列の作成ケース¶
SQL Server¶
結果¶
Snowflake¶
結果¶
警告
クエリが実行された時間によって作成日が特定される場合、クエリ結果が変わる可能性があります。オリジンデータベースで指定されたクエリを一度に実行し、新しいSnowflakeクエリで別の時間にオブジェクトを実行することが可能です。
9.選択列単一名ケース¶
SQL Server¶
結果¶
name |
|---|
FK_Name_Test |
Snowflake¶
結果¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
10.選択列修飾名ケース¶
SQL Server¶
結果¶
name |
|---|
FK_Name_Test |
Snowflake¶
結果¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
既知の問題¶
1.制約にユーザーが作成した名前がない場合、「name」列は正しい出力を示さないことがあります¶
もし参照された名前がデータベースから自動生成されたものであれば、それを見直して希望の値を使用することができるでしょう。
2.列を選択する場合、Snowflakeで同等の適用可能な列に応じて制限があります¶
sys.foreign_keysの列はSnowflakeでは完全に等価ではないため、等価性の制限により結果が変わる場合があります。
3.OBJECT_ID()関数が処理すべき有効なパターンを持っているか、データベース、スキーマ、またはテーブルを抽出できませんでした¶
OBJECT_ID()関数を受け取った名前に基づいて、この名前の処理は制限され、形式に依存します。
4.OBJECT_NAME()関数ケースを使用した名前列¶
OBJECT_NAME()関数はまだサポートされていないため、この関数に関連する変換はサポートされていません。
SQL Server¶
Snowflake¶
5.SCHEMA_NAME()と TYPE_NAME()関数もまだサポートされていません。¶
6.システムテーブルがサポートされていない場合、異なるJoinステートメント型はサポートされないことがあります。サポートされているシステムテーブルを確認します。¶
7.JOIN ステートメントを含むケースはサポートされていません。¶
8.エイリアス AS を含む名前はサポートされていません。¶
関連 EWIs¶
SSC-EWI-0073: 機能同等性レビュー保留中。