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. |
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;
Sintaxe no Snowflake¶
SELECT ('column_name' | * )
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
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);
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);
1. Simple Select Case¶
SQL Server¶
SELECT *
FROM sys.foreign_keys;
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';
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';
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';
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')
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';
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';
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';
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';
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';
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;
Resultado¶
The query produced no results.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
LAST_ALTERED = CURRENT_TIMESTAMP()
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Resultado¶
The query produced no results.
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;
Resultado¶
The foreign keys altered in the last 30 days.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
DATEDIFF(DAY, LAST_ALTERED, CURRENT_TIMESTAMP() :: TIMESTAMP) <= 30
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Resultado¶
The foreign keys altered in the last 30 days.
8. Create Date Column Case¶
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE create_date = '2023-09-12 14:36:38.060';
Resultado¶
The foreign keys that were created on the specified date and time.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CREATED = '2023-09-12 14:36:38.060'
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Resultado¶
The foreign keys that were created on the specified date and time.
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;
Resultado¶
nome |
|---|
FK_Name_Test |
Snowflake¶
SELECT
CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
Resultado¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
10. Selected Columns Qualified Name Case¶
SQL Server¶
SELECT
fk.name
FROM sys.foreign_keys AS fk;
Resultado¶
nome |
|---|
FK_Name_Test |
Snowflake¶
SELECT
fk.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS fk
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
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;
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';