Se você já consultou o
sys.identity_columns
view no SQL Server, você saberá que ele retorna uma lista de colunas de identidade. Ele também retorna o object_id
da tabela, mas não o nome da tabela ou seu esquema. Você pode usar os exemplos de código neste artigo para retornar as colunas de identidade, juntamente com suas respectivas tabelas e esquemas.
Exemplo 1 - Retornar todos os resultados
Este exemplo usa uma junção com
sys.objects
para retornar informações de tabela e esquema USE WideWorldImportersDW; SELECT SCHEMA_NAME(o.schema_id) AS [schema], OBJECT_NAME(ic.object_id) AS [object], o.type_desc, ic.name, ic.seed_value, ic.increment_value, ic.last_value FROM sys.identity_columns ic INNER JOIN sys.objects o ON o.object_id = ic.object_id ORDER BY SCHEMA_NAME(o.schema_id) ASC;
Resultado:
+-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------+ | schema | object | type_desc | name | seed_value | increment_value | last_value | |-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------| | Fact | Movement | USER_TABLE | Movement Key | 1 | 1 | 236667 | | Fact | Order | USER_TABLE | Order Key | 1 | 1 | 231412 | | Fact | Purchase | USER_TABLE | Purchase Key | 1 | 1 | 8367 | | Fact | Sale | USER_TABLE | Sale Key | 1 | 1 | 228265 | | Fact | Stock Holding | USER_TABLE | Stock Holding Key | 1 | 1 | 227 | | Fact | Transaction | USER_TABLE | Transaction Key | 1 | 1 | 99585 | | Integration | Customer_Staging | USER_TABLE | Customer Staging Key | 1 | 1 | NULL | | Integration | Employee_Staging | USER_TABLE | Employee Staging Key | 1 | 1 | NULL | | Integration | Movement_Staging | USER_TABLE | Movement Staging Key | 1 | 1 | NULL | | Integration | Order_Staging | USER_TABLE | Order Staging Key | 1 | 1 | NULL | | Integration | PaymentMethod_Staging | USER_TABLE | Payment Method Staging Key | 1 | 1 | NULL | | Integration | Purchase_Staging | USER_TABLE | Purchase Staging Key | 1 | 1 | NULL | | Integration | Sale_Staging | USER_TABLE | Sale Staging Key | 1 | 1 | NULL | | Integration | StockHolding_Staging | USER_TABLE | Stock Holding Staging Key | 1 | 1 | NULL | | Integration | StockItem_Staging | USER_TABLE | Stock Item Staging Key | 1 | 1 | NULL | | Integration | Supplier_Staging | USER_TABLE | Supplier Staging Key | 1 | 1 | NULL | | Integration | Transaction_Staging | USER_TABLE | Transaction Staging Key | 1 | 1 | NULL | | Integration | TransactionType_Staging | USER_TABLE | Transaction Type Staging Key | 1 | 1 | NULL | | Integration | City_Staging | USER_TABLE | City Staging Key | 1 | 1 | NULL | | sys | queue_messages_2041058307 | INTERNAL_TABLE | queuing_order | 0 | 1 | NULL | | sys | sqlagent_job_history | INTERNAL_TABLE | instance_id | 1 | 1 | NULL | | sys | sqlagent_jobsteps_logs | INTERNAL_TABLE | log_id | 1 | 1 | NULL | | sys | queue_messages_1977058079 | INTERNAL_TABLE | queuing_order | 0 | 1 | NULL | | sys | queue_messages_2009058193 | INTERNAL_TABLE | queuing_order | 0 | 1 | NULL | +-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------+
Exemplo 2 – Retornar somente tabelas de usuários
Este exemplo usa uma junção interna com
sys.tables
para retornar apenas colunas de identidade das tabelas de usuário. USE WideWorldImportersDW; SELECT SCHEMA_NAME(t.schema_id) AS [schema], OBJECT_NAME(ic.object_id) AS [table], ic.name, ic.seed_value, ic.increment_value, ic.last_value FROM sys.identity_columns ic INNER JOIN sys.tables t ON t.object_id = ic.object_id ORDER BY SCHEMA_NAME(t.schema_id) ASC;
Resultado:
+-------------+-------------------------+------------------------------+--------------+-------------------+--------------+ | schema | table | name | seed_value | increment_value | last_value | |-------------+-------------------------+------------------------------+--------------+-------------------+--------------| | Fact | Movement | Movement Key | 1 | 1 | 236667 | | Fact | Order | Order Key | 1 | 1 | 231412 | | Fact | Purchase | Purchase Key | 1 | 1 | 8367 | | Fact | Sale | Sale Key | 1 | 1 | 228265 | | Fact | Stock Holding | Stock Holding Key | 1 | 1 | 227 | | Fact | Transaction | Transaction Key | 1 | 1 | 99585 | | Integration | City_Staging | City Staging Key | 1 | 1 | NULL | | Integration | Customer_Staging | Customer Staging Key | 1 | 1 | NULL | | Integration | Employee_Staging | Employee Staging Key | 1 | 1 | NULL | | Integration | Movement_Staging | Movement Staging Key | 1 | 1 | NULL | | Integration | Order_Staging | Order Staging Key | 1 | 1 | NULL | | Integration | PaymentMethod_Staging | Payment Method Staging Key | 1 | 1 | NULL | | Integration | Purchase_Staging | Purchase Staging Key | 1 | 1 | NULL | | Integration | Sale_Staging | Sale Staging Key | 1 | 1 | NULL | | Integration | StockHolding_Staging | Stock Holding Staging Key | 1 | 1 | NULL | | Integration | StockItem_Staging | Stock Item Staging Key | 1 | 1 | NULL | | Integration | Supplier_Staging | Supplier Staging Key | 1 | 1 | NULL | | Integration | Transaction_Staging | Transaction Staging Key | 1 | 1 | NULL | | Integration | TransactionType_Staging | Transaction Type Staging Key | 1 | 1 | NULL | +-------------+-------------------------+------------------------------+--------------+-------------------+--------------+