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_EVENTT_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.SYSTEM_SQL_MODULES”

지원되지 않음

SYS.FOREIGN_KEYS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

오브젝트 당 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 = 시스템에서 이름이 생성되었습니다.

0 = 사용자가 이름을 제공했습니다.

아니요

sys.objects 에서 상속된 열은 다음과 같습니다.

자세한 내용은 sys.objects 설명서 를 참조하십시오.

열 이름

데이터 타입

설명

Snowflake에 동등한 열이 있습니다.

이름

sysname

오브젝트 이름입니다.

object_id

int

오브젝트 식별 번호입니다. 데이터베이스 내에서 고유합니다.

아니요

principal_id

int

스키마 소유자와 다른 경우 개별 소유자의 ID입니다.

아니요

schema_id

int

오브젝트가 포함된 스키마의 ID입니다.

아니요

parent_object_id

int

이 오브젝트가 속한 오브젝트의 ID입니다.

아니요

타입

char(2)

오브젝트 타입

type_desc

nvarchar(60)

오브젝트 유형에 대한 설명입니다.

create_date

날짜/시간

오브젝트가 생성된 날짜입니다.

modify_date

날짜/시간

ALTER 문을 사용하여 오브젝트를 마지막으로 수정한 날짜입니다.

is_ms_shipped

bit

오브젝트는 내부 SQL Server 구성 요소에서 생성됩니다.

아니요

is_published

bit

오브젝트는 내부 SQL Server 구성 요소에서 생성됩니다.

아니요

is_schema_published

bit

오브젝트의 스키마만 게시됩니다.

아니요

경고

이 경우 sys.foreign_keys의 경우 Snowflake에 동등성이 없다는 점에 유의하십시오. 그러나 동등성은 sys.objects에서 상속된 열에서 기본적으로 생성됩니다.

애플리케이션 열 등가성

SQLServer

Snowflake

제한 사항

적용 가능

이름

CONSTRAINT_NAME

데이터베이스에서 자동 생성된 이름은 대상 Snowflake에서 자동 생성된 이름으로 검토될 수 있습니다.

타입

CONSTRAINT_TYPE

유형 열에는 다양한 옵션이 있습니다. 그러나 이 경우에는 외래 키를 나타내는 문자 ‘F’만 지원됩니다.

아니요. 모든 테이블 제약 조건에서 외래 키를 확인하기 위한 추가 유효성 검사로 인해 적용할 수 없습니다.

type_desc

CONSTRAINT_TYPE

제한 사항을 찾을 수 없습니다.

아니요. 모든 테이블 제약 조건에서 외래 키를 확인하기 위한 추가 유효성 검사로 인해 적용할 수 없습니다.

create_date

CREATED

데이터 타입의 차이점.

modify_date

LAST_ALTERED

데이터 타입의 차이점.

parent_object_id

CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, TABLE_NAME

OBJECT_ID() 함수를 사용하는 사례에 대해서만 열이 생성되고 이름에는 유효한 패턴이 있습니다.

SQL 서버의 구문
SELECT ('column_name' | * )
FROM sys.foreign_keys;
Copy
Snowflake의 구문
SELECT ('column_name' | * )
FROM information_schema.table_constraints 
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy

참고

시스템 외래 키에 대한 등가물은 Snowflake의 카탈로그 뷰에서 ormation_schema.table_constraints이므로, 다른 제약 조건에서 외래 키 제약 조건을 식별하려면 추가 ‘WHERE’ 절에서 제약 조건의 유형을 정의해야 합니다.

샘플 소스 패턴

다음 샘플을 올바르게 수행하려면 다음 문을 실행해야 합니다.

SQL 서버

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Email VARCHAR(100)
);

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    TotalAmount DECIMAL(10, 2),
    CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);


INSERT INTO Customers (CustomerID, FirstName, LastName, Email)
VALUES
    (1, 'John', 'Doe', 'john.doe@example.com'),
    (2, 'Jane', 'Smith', 'jane.smith@example.com');

INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
    (101, 1, '2023-09-01', 100.50),
    (102, 1, '2023-09-02', 75.25),
    (103, 2, '2023-09-03', 50.00);
Copy
Snowflake
CREATE OR REPLACE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Email VARCHAR(100)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;

CREATE OR REPLACE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    TotalAmount DECIMAL(10, 2),
       CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID)
   )
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;

INSERT INTO Customers (CustomerID, FirstName, LastName, Email)
VALUES
    (1, 'John', 'Doe', 'john.doe@example.com'),
    (2, 'Jane', 'Smith', 'jane.smith@example.com');

INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
    (101, 1, '2023-09-01', 100.50),
    (102, 1, '2023-09-02', 75.25),
    (103, 2, '2023-09-03', 50.00);
Copy

1. Simple Select Case

SQL 서버
SELECT *
FROM sys.foreign_keys;
Copy
결과

이름

object_id

principal_id

schema_id

타입

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
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

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. Name Column Case

SQL 서버
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test';
Copy
결과

이름

object_id

principal_id

schema_id

타입

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
SELECT * FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_NAME = 'FK_NAME_TEST'
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

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

경고

제약 조건 이름이 데이터베이스에서 자동으로 생성되고 쿼리에 사용되는 경우 이 변환을 확인해야 할 수 있습니다. 자세한 내용은 알려진 문제 섹션을 검토하세요.

3. Parent Object ID Case

이 예제에서는 서로 다른 동등한 열을 생성하기 위한 이름 처리의 예시를 보여주기 위해 데이터베이스와 스키마를 생성했습니다.

SQL 서버
use database_name_test
create schema schema_name_test

CREATE TABLE schema_name_test.Customers (
    CustomerID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Email VARCHAR(100)
);

CREATE TABLE schema_name_test.Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    TotalAmount DECIMAL(10, 2),
    CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES schema_name_test.Customers(CustomerID)
);

INSERT INTO schema_name_test.Customers (CustomerID, FirstName, LastName, Email)
VALUES
    (1, 'John', 'Doe', 'john.doe@example.com'),
    (2, 'Jane', 'Smith', 'jane.smith@example.com');

INSERT INTO schema_name_test.Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
    (101, 1, '2023-09-01', 100.50),
    (102, 1, '2023-09-02', 75.25),
    (103, 2, '2023-09-03', 50.00);

SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test' AND parent_object_id = OBJECT_ID(N'database_name_test.schema_name_test.Orders')
Copy
결과

이름

object_id

principal_id

schema_id

타입

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
USE DATABASE database_name_test;

CREATE SCHEMA IF NOT EXISTS schema_name_test
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

CREATE OR REPLACE TABLE schema_name_test.Customers (
    CustomerID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Email VARCHAR(100)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

CREATE OR REPLACE TABLE schema_name_test.Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    TotalAmount DECIMAL(10, 2),
       CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES schema_name_test.Customers (CustomerID)
   )
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

INSERT INTO schema_name_test.Customers (CustomerID, FirstName, LastName, Email)
VALUES
    (1, 'John', 'Doe', 'john.doe@example.com'),
    (2, 'Jane', 'Smith', 'jane.smith@example.com');

INSERT INTO schema_name_test.Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
    (101, 1, '2023-09-01', 100.50),
    (102, 1, '2023-09-02', 75.25),
    (103, 2, '2023-09-03', 50.00);

SELECT * FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    CONSTRAINT_NAME = 'FK_NAME_TEST'
    AND CONSTRAINT_CATALOG = 'DATABASE_NAME_TEST'
    AND CONSTRAINT_SCHEMA = 'SCHEMA_NAME_TEST'
    AND TABLE_NAME = 'ORDERS'
    AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

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. Type Column Case

SQL 서버의 ‘F’는 ‘외래 키’를 의미하며, 모든 테이블 제약 조건에서 외래 키를 지정하기 위해 마지막에 유효성 검사로 인해 제거됩니다.

SQL 서버
 SELECT * FROM sys.foreign_keys WHERE type = 'F';
Copy
결과

이름

object_id

principal_id

schema_id

타입

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
 SELECT * FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    type = 'F' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

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. Type Desc Column Case

‘type_desc’ 열은 모든 테이블 제약 조건에서 외래 키를 지정하기 위해 끝 부분의 유효성 검사로 인해 제거됩니다.

SQL 서버
SELECT
    * 
FROM
    sys.foreign_keys 
WHERE 
    type_desc = 'FOREIGN_KEY_CONSTRAINT';
Copy
결과

이름

object_id

principal_id

schema_id

타입

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
SELECT
    *
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    type_desc = 'FOREIGN_KEY_CONSTRAINT' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

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. Modify Date Column Simple Case

SQL 서버
SELECT *
FROM sys.foreign_keys
WHERE modify_date = CURRENT_TIMESTAMP;
Copy
결과
The query produced no results.

Copy
Snowflake
SELECT *
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    LAST_ALTERED = CURRENT_TIMESTAMP()
    AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과
The query produced no results.
Copy

7. Modify Date Column with DATEDIFF() Case

다음 예제에서는 sys.foreign_keys(sys.objects에서 상속된)의 열이 DATEDIFF 함수의 내부에 있는 보다 복잡한 시나리오를 보여줍니다. 이 경우 해당 등가물에 해당하는 인자는 Snowflake의 Information Schema에서 해당 열로 변경됩니다.

SQL 서버
SELECT *
FROM sys.foreign_keys
WHERE DATEDIFF(DAY, modify_date, GETDATE()) <= 30;
Copy
결과
The foreign keys altered in the last 30 days.
Copy
Snowflake
SELECT *
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    DATEDIFF(DAY, LAST_ALTERED, CURRENT_TIMESTAMP() :: TIMESTAMP) <= 30
    AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과
The foreign keys altered in the last 30 days.
Copy

8. Create Date Column Case

SQL 서버
SELECT *
FROM sys.foreign_keys
WHERE create_date = '2023-09-12 14:36:38.060';
Copy
결과
The foreign keys that were created on the specified date and time.

Copy
Snowflake
SELECT *
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    CREATED = '2023-09-12 14:36:38.060'
    AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과
The foreign keys that were created on the specified date and time.

Copy

경고

쿼리가 실행된 시간으로 인해 생성 날짜가 특정할 경우 결과가 변경될 수 있습니다. 원본 데이터베이스에서 지정된 쿼리를 한 번에 실행한 다음 새로운 Snowflake 쿼리에서 오브젝트를 다른 시간에 실행할 수 있습니다.

9. Selected Columns Single Name Case

SQL 서버
SELECT name
FROM sys.foreign_keys;
Copy
결과

이름

FK_Name_Test

Snowflake
SELECT
    CONSTRAINT_NAME
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

CONSTRAINT_NAME

FK_Name_Test

10. Selected Columns Qualified Name Case

SQL 서버
SELECT
    fk.name
FROM sys.foreign_keys AS fk;
Copy
결과

이름

FK_Name_Test

Snowflake
SELECT
    fk.CONSTRAINT_NAME
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS fk
WHERE
    CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
결과

CONSTRAINT_NAME

FK_Name_Test

Known Issues

1. The ‘name’ column may not show a correct output if the constraint does not have a user-created name

참조된 이름이 데이터베이스에서 자동 생성된 이름인 경우 이를 검토하여 원하는 값을 사용할 가능성이 높습니다.

2. When selecting columns, there is a limitation that depends on the applicable columns that are equivalent in Snowflake

Sys.foreign_keys의 열은 Snowflake에서 완전히 동일하지 않으므로 동등성 제한으로 인해 일부 결과가 변경될 수 있습니다.

3. The OBJECT_ID() function may have a valid pattern to be processed or the database, schema or table could not be extracted

OBJECT_ID() 함수를 수신하는 이름에 따라 이 이름의 처리는 형식에 따라 제한되고 종속성을 갖습니다.

4. Name Column With OBJECT_NAME() Function Case

OBJECT_NAME() 함수는 아직 지원되지 않으므로 이 함수와 관련된 변환은 지원되지 않습니다.

SQL 서버
SELECT name AS ForeignKeyName,
    OBJECT_NAME(parent_object_id) AS ReferencingTable,
    OBJECT_NAME(referenced_object_id) AS ReferencedTable
FROM sys.foreign_keys;
Copy
Snowflake
SELECT
    name AS ForeignKeyName,
    OBJECT_NAME(parent_object_id) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'OBJECT_NAME' NODE ***/!!! AS ReferencingTable,
    OBJECT_NAME(referenced_object_id) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'OBJECT_NAME' NODE ***/!!! AS ReferencedTable
FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
5. SCHEMA_NAME() and TYPE_NAME() functions are also not supported yet.
6. Different Join statement types may be not supported if the system table is not supported. Review the supported system tables.
7. Cases with JOIN statements are not supported.
8. Names with alias AS are not supported.