Wenn Sie jemals die sys.identity_columns
abgefragt haben view in SQL Server wissen Sie, dass es eine Liste von Identitätsspalten zurückgibt. Es gibt auch die object_id
zurück der Tabelle, aber nicht der Tabellenname oder sein Schema.
Sie können die Codebeispiele in diesem Artikel verwenden, um die Identitätsspalten zusammen mit ihren jeweiligen Tabellen und Schemata zurückzugeben.
Beispiel 1 – Alle Ergebnisse zurückgeben
Dieses Beispiel verwendet einen Join mit sys.objects
um Tabellen- und Schemainformationen zurückzugeben
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;
Ergebnis:
+-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------+ | 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 | +-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------+
Beispiel 2 – Nur Benutzertabellen zurückgeben
Dieses Beispiel verwendet einen inneren Join mit sys.tables
um nur Identitätsspalten aus Benutzertabellen zurückzugeben.
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;
Ergebnis:
+-------------+-------------------------+------------------------------+--------------+-------------------+--------------+ | 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 | +-------------+-------------------------+------------------------------+--------------+-------------------+--------------+