SnowConvert AI - SQL Server-Azure Synapse -Tabelas do sistema

Especificação de tradução para tabelas do sistema Transact-SQL

Tabelas do sistema

Transact-SQL

Snowflake SQL

Notas

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

Sem suporte

SYS.ALL_SQL_MODULES

Sem suporte

SYS.ALLOCATION_UNITS

Sem suporte

SYS.ASSEMBLY_MODULES

Sem suporte

SYS.CHECK_CONSTRAINTS

Sem suporte

SYS.COLUMN_STORE_DICTIONARIES

Sem suporte

SYS.COLUMN_STORE_ROW_GROUPS

Sem suporte

SYS.COLUMN_STORE_SEGMENTS

Sem suporte

SYS.COMPUTED_COLUMNS

Sem suporte

SYS.DEFAULT_CONSTRAINTS

Sem suporte

SYS.EVENTS

Sem suporte

SYS.EVENT_NOTIFICATIONS

Sem suporte

SYS.EVENT_NOTIFICATION_EVENT_TYPES

Sem suporte

SYS.EXTENDED_PROCEDURES

Sem suporte

SYS.EXTERNAL_LANGUAGE_FILES

Sem suporte

SYS.EXTERNAL_LANGUAGES

Sem suporte

SYS.EXTERNAL_LIBRARIES

Sem suporte

SYS.EXTERNAL_LIBRARY_FILES

Sem suporte

SYS.FOREIGN_KEYS

INFORMATION_SCHEMA.TABLE_CONSTRAINTS

SYS.FOREIGN_KEY_COLUMNS

Sem suporte

SYS.FUNCTION_ORDER_COLUMNS

Sem suporte

SYS.HASH_INDEXES

Sem suporte

SYS.INDEXES

Sem suporte

SYS.INDEX_COLUMNS

Sem suporte

SYS.INDEX_RESUMABLE_OPERATIONS

Sem suporte

SYS.INTERNAL_PARTITIONS

Sem suporte

SYS.INTERNAL_TABLES

Sem suporte

SYS.KEY_CONSTRAINTS

Sem suporte

SYS.MASKED_COLUMNS

Sem suporte

SYS.MEMORY_OPTIMIZED_TABLES_INTERNAL_ATTRIBUTES

Sem suporte

SYS.MODULE_ASSEMBLY_USAGES

Sem suporte

SYS.NUMBERED_PROCEDURES

Sem suporte

SYS.NUMBERED_PROCEDURE_PARAMETERS

Sem suporte

SYS.PARAMETERS

Sem suporte

SYS.PARTITIONS

Sem suporte

SYS.PERIODS

Sem suporte

SYS.SERVER_ASSEMBLY_MODULES

Sem suporte

SYS.SERVER_EVENTS

Sem suporte

SYS.SERVER_EVENTT_NOTIFICATIONS

Sem suporte

SYS.SERVER_SQL_MODULE

Sem suporte

SYS.SERVER_TRIGGERS

Sem suporte

SYS._SERVER_TRIGGER_EVENTS

Sem suporte

SYS.SQL_DEPENDENCIES

Sem suporte

SYS.SQL_EXPRESSION_DEPENDENCIES

Sem suporte

SYS.SQL_MODULES

Sem suporte

SYS.STATS

Sem suporte

SYS.STATS_COLUMNS

Sem suporte

SYS.SYNONYMS

Sem suporte

SYS.SYSTEM_COLUMNS

Sem suporte

SYS.SYSTEM_OBJECTS

Sem suporte

SYS.SYSTEM_PARAMETERS

Sem suporte

SYS.SYSTEM_SQL_MODULES»

Sem suporte

SYS.FOREIGN_KEYS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Contém uma linha por objeto que é uma restrição FOREIGN KEY (Documentação do SQLServer).

As colunas para FOREIGN KEY (sys.foreign_keys) são as seguintes:

Nome da coluna

Tipo de dados

Descrição

Tem uma coluna equivalente no Snowflake

-

Para obter uma lista das colunas que essa exibição herda, consulte sys.objects (Transact-SQL).

Parcial

referenced_object_id

int

ID do objeto referenciado.

Não

key_index_id

int

ID do índice de chave dentro do objeto referenciado.

Não

is_disabled

bit

A restrição FOREIGN KEY está desativada.

Não

is_not_for_replication

bit

A restrição FOREIGN KEY foi criada usando a opção NOT FOR REPLICATION.

Não

is_not_trusted

bit

A restrição FOREIGN KEY não foi verificada pelo sistema.

Não

delete_referential_action

tinyint

A ação referencial que foi declarada para este FOREIGN KEY quando ocorre uma exclusão. Consulte a Documentação do SQLServer.

Não

delete_referential_action_desc

nvarchar(60)

Descrição da ação referencial que foi declarada para este FOREIGN KEY quando ocorre uma exclusão. Consulte a Documentação do SQLServer.

Não

update_referential_action

tinyint

A ação referencial que foi declarada para este FOREIGN KEY quando ocorre uma atualização. Consulte a Documentação do SQLServer.

Não

update_referential_action_desc

nvarchar(60)

Descrição da ação referencial que foi declarada para este FOREIGN KEY quando ocorre uma atualização. Consulte a Documentação do SQLServer.

Não

is_system_named

bit

1 = O nome foi gerado pelo sistema.

0 = O nome foi fornecido pelo usuário.

Não

As colunas herdadas de sys.objects são as seguintes:

Para obter mais informações, consulte a documentação de sys.objects.

Nome da coluna

Tipo de dados

Descrição

Tem uma coluna equivalente no Snowflake

nome

sysname

Nome do objeto.

Sim

object_id

int

Número de identificação do objeto. É exclusivo dentro de um banco de dados.

Não

principal_id

int

ID do proprietário individual, se diferente do proprietário do esquema.

Não

schema_id

int

ID do esquema em que o objeto está contido.

Não

parent_object_id

int

ID do objeto ao qual este objeto pertence.

Não

type

char(2)

Tipo de objeto

Sim

type_desc

nvarchar(60)

Descrição do tipo de objeto

Sim

create_date

datetime

Data em que o objeto foi criado.

Sim

modify_date

datetime

Data em que o objeto foi modificado pela última vez usando uma instrução ALTER.

Sim

is_ms_shipped

bit

O objeto é criado por um componente SQL interno do servidor.

Não

is_published

bit

O objeto é criado por um componente SQL interno do servidor.

Não

is_schema_published

bit

Somente o esquema do objeto é publicado.

Não

Aviso

Observe que, nesse caso, para sys.foreign_keys, não há equivalência no Snowflake. Porém, a equivalência é feita nas colunas herdadas de sys.objects.

Equivalência de coluna aplicável

SQLServer

Snowflake

Limitações

Aplicável

nome

CONSTRAINT_NAME

Os nomes gerados automaticamente pelo banco de dados podem ser revisados para o nome gerado automaticamente do Snowflake de destino,

Sim

type

CONSTRAINT_TYPE

A coluna de tipo tem uma variedade de opções. Mas, neste caso, o suporte é apenas para a letra “F” que representa as chaves estrangeiras.

Não. Devido à validação extra para determinar as chaves estrangeiras de todas as restrições de tabela, ela não é aplicável.

type_desc

CONSTRAINT_TYPE

Nenhuma limitação encontrada.

Não. Devido à validação extra para determinar as chaves estrangeiras de todas as restrições de tabela, ela não é aplicável.

create_date

CREATED

Diferenças de tipo de dados.

Sim

modify_date

LAST_ALTERED

Diferenças de tipo de dados.

Sim

parent_object_id

CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, TABLE_NAME

As colunas são geradas somente para os casos que utilizam a função OBJECT_ID(), e o nome tem um padrão válido.

Sim

Sintaxe no SQL Server
SELECT ('column_name' | * )
FROM sys.foreign_keys;
Copy
Sintaxe no Snowflake
SELECT ('column_name' | * )
FROM information_schema.table_constraints 
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy

Nota

Como a equivalência para as chaves estrangeiras do sistema é a visualização do catálogo no Snowflake para in ormation_schema.table_constraints, é necessário definir o tipo da restrição em uma cláusula adicional “WHERE” para identificar as restrições de chave estrangeira de outras restrições.

Amostra de padrões da origem

Para realizar corretamente os exemplos a seguir, é necessário executar as seguintes instruções:

SQL Server

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 Server
SELECT *
FROM sys.foreign_keys;
Copy
Resultado

nome

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

falso

true

falso

1655676946

1

falso

falso

0

NO_ACTION

0

NO_ACTION

true

Snowflake
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
Resultado

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

nulo

2023-09-11 15:23:51.969 -0700

2023-09-11 15:23:52.097 -0700

NO

Aviso

Os resultados diferem devido às diferenças nos objetos da coluna e à equivalência ausente. O resultado pode ser verificado.

2. Name Column Case

SQL Server
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test';
Copy
Resultado

nome

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

falso

true

falso

1655676946

1

falso

falso

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
Resultado

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

nulo

2023-09-11 15:23:51.969 -0700

2023-09-11 15:23:52.097 -0700

NO

Aviso

Esta tradução pode exigir verificação se o nome da restrição é gerado automaticamente pelo banco de dados e usado na consulta. Para obter mais informações, consulte a seção Problemas conhecidos.

3. Parent Object ID Case

Neste exemplo, foram criados um banco de dados e um esquema para exemplificar o processamento dos nomes para criar colunas diferentes e equivalentes.

SQL Server
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
Resultado

nome

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

falso

true

falso

1655676946

1

falso

falso

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
Resultado

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

nulo

2023-09-11 15:23:51.969 -0700

2023-09-11 15:23:52.097 -0700

NO

Aviso

Se o nome que vem dentro da função OBJECT_ID() não tiver um padrão válido, ele não será convertido devido às limitações de processamento de nomes em caracteres especiais.

Aviso

Analise o banco de dados que está sendo usado no Snowflake.

4. Type Column Case

O «F» no SQL Server significa «Foreign Key» e é removido devido à validação no final para especificar a chave estrangeira de todas as restrições da tabela.

SQL Server
 SELECT * FROM sys.foreign_keys WHERE type = 'F';
Copy
Resultado

nome

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

falso

true

falso

1655676946

1

falso

falso

0

NO_ACTION

0

NO_ACTION

true

Snowflake
 SELECT * FROM
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
    type = 'F' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Copy
Resultado

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

nulo

2023-09-11 15:23:51.969 -0700

2023-09-11 15:23:52.097 -0700

NO

5. Type Desc Column Case

A coluna «type_desc» foi removida devido à validação no final para especificar a chave estrangeira de todas as restrições da tabela.

SQL Server
SELECT
    * 
FROM
    sys.foreign_keys 
WHERE 
    type_desc = 'FOREIGN_KEY_CONSTRAINT';
Copy
Resultado

nome

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

falso

true

falso

1655676946

1

falso

falso

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
Resultado

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

nulo

2023-09-11 15:23:51.969 -0700

2023-09-11 15:23:52.097 -0700

NO

6. Modify Date Column Simple Case

SQL Server
SELECT *
FROM sys.foreign_keys
WHERE modify_date = CURRENT_TIMESTAMP;
Copy
Resultado
The query produced no results.

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

7. Modify Date Column with DATEDIFF() Case

O exemplo a seguir mostra um cenário mais complexo em que as colunas de sys.foreign_keys (herdadas de sys.objects) estão dentro de uma função DATEDIFF. Nesse caso, o argumento correspondente à equivalência aplicável é alterado para a coluna correspondente de information.schema no Snowflake.

SQL Server
SELECT *
FROM sys.foreign_keys
WHERE DATEDIFF(DAY, modify_date, GETDATE()) <= 30;
Copy
Resultado
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
Resultado
The foreign keys altered in the last 30 days.
Copy

8. Create Date Column Case

SQL Server
SELECT *
FROM sys.foreign_keys
WHERE create_date = '2023-09-12 14:36:38.060';
Copy
Resultado
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
Resultado
The foreign keys that were created on the specified date and time.

Copy

Aviso

O resultado pode mudar se a data de criação for específica devido ao horário em que as consultas foram executadas. É possível executar uma consulta específica em um momento no banco de dados de origem e, em seguida, executar os objetos em outro momento nas novas consultas do Snowflake.

9. Selected Columns Single Name Case

SQL Server
SELECT name
FROM sys.foreign_keys;
Copy
Resultado

nome

FK_Name_Test

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

CONSTRAINT_NAME

FK_Name_Test

10. Selected Columns Qualified Name Case

SQL Server
SELECT
    fk.name
FROM sys.foreign_keys AS fk;
Copy
Resultado

nome

FK_Name_Test

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

CONSTRAINT_NAME

FK_Name_Test

Problemas conhecidos

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

Se o nome referenciado for gerado automaticamente a partir do banco de dados, é provável que você o revise e use o valor desejado.

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

Como as colunas de sys.foreign_keys não são totalmente equivalentes no Snowflake, alguns resultados podem mudar devido às limitações da equivalência.

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

Com base no nome que recebe a função OBJECT_ID(), o processamento desse nome será limitado e dependerá da formatação.

4. Name Column With OBJECT_NAME() Function Case

Como a função OBJECT_NAME() ainda não é compatível, as transformações relacionadas a essa função não são compatíveis.

SQL Server
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.