Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Inclure des tables et des schémas lors de la liste des colonnes d'identité dans une base de données SQL Server

Si vous avez déjà interrogé sys.identity_columns vue dans SQL Server, vous saurez qu'il renvoie une liste de colonnes d'identité. Il renvoie également le object_id de la table, mais pas le nom de la table ou son schéma.

Vous pouvez utiliser les exemples de code de cet article pour renvoyer les colonnes d'identité, ainsi que leurs tables et schémas respectifs.

Exemple 1 - Renvoyer tous les résultats

Cet exemple utilise une jointure avec sys.objects pour renvoyer des informations sur la table et le schéma

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;

Résultat :

+-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------+
| 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         |
+-------------+---------------------------+----------------+------------------------------+--------------+-------------------+--------------+

Exemple 2 – Renvoyer uniquement les tables utilisateur

Cet exemple utilise une jointure interne avec sys.tables pour renvoyer uniquement les colonnes d'identité des tables utilisateur.

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;

Résultat :

+-------------+-------------------------+------------------------------+--------------+-------------------+--------------+
| 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         |
+-------------+-------------------------+------------------------------+--------------+-------------------+--------------+