sql >> Database >  >> RDS >> Sqlserver

Lijst van alle identiteitskolommen in een SQL Server-database:sys.identity_columns

U kunt T-SQL gebruiken om een ​​lijst met identiteitskolommen in een database in SQL Server te retourneren.

U kunt dit doen met behulp van de sys.identity_columns systeemcatalogusweergave.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

USE Test;
SELECT 
  OBJECT_NAME(object_id) AS [object],
  name,
  seed_value,
  increment_value,
  last_value,
  is_not_for_replication
FROM sys.identity_columns;

Resultaat:

+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+
| object                    | name             | seed_value   | increment_value   | last_value   | is_not_for_replication   |
|---------------------------+------------------+--------------+-------------------+--------------+--------------------------|
| ConstraintTest            | ConstraintTestId | 1            | 1                 | 17           | 0                        |
| sqlagent_job_history      | instance_id      | 1            | 1                 | NULL         | 0                        |
| sqlagent_jobsteps_logs    | log_id           | 1            | 1                 | NULL         | 0                        |
| Cats                      | id               | 1            | 1                 | 2            | 0                        |
| Dogs                      | id               | 1            | 1                 | 1            | 0                        |
| t1                        | id               | 1            | 1                 | 2            | 0                        |
| t2                        | id               | 150          | 10                | 160          | 0                        |
| scope_identity_test       | id               | 1            | 1                 | 3            | 0                        |
| Event                     | EventId          | 1            | 1                 | NULL         | 0                        |
| Scoreboard                | ScoreId          | 1            | 1                 | 8            | 0                        |
| Pets                      | PetId            | 1            | 1                 | 5            | 0                        |
| BestFriends               | pet_id           | 101          | 10                | 121          | 0                        |
| Cities                    | CityId           | 150          | 10                | 180          | 0                        |
| Colors                    | ColorId          | 1            | 1                 | 6            | 0                        |
| queue_messages_1977058079 | queuing_order    | 0            | 1                 | NULL         | 0                        |
| t6                        | id               | 1            | 1                 | 1            | 0                        |
| t7                        | id               | 100          | 1                 | 100          | 0                        |
| queue_messages_2009058193 | queuing_order    | 0            | 1                 | NULL         | 0                        |
| queue_messages_2041058307 | queuing_order    | 0            | 1                 | NULL         | 0                        |
+---------------------------+------------------+--------------+-------------------+--------------+--------------------------+

Ik heb mijn Test . gebruikt database voor dit voorbeeld. Ik heb deze gekozen omdat ik eerder identiteitskolommen heb gemaakt met verschillende seed-incrementwaarden.

In dit voorbeeld gebruikte ik de OBJECT_NAME() functie om de naam van het object te halen uit de object_id kolom. In dit geval is dat de naam van de tabel. Met andere woorden, in de eerste kolom staat de tabelnaam en in de tweede kolom de identiteitskolom.

Voorbeeld 2 – Lijst van alle kolommen

In het vorige voorbeeld heb ik slechts een handvol kolommen geretourneerd. Dit komt omdat sys.identity_columns geeft veel kolommen terug.

In dit voorbeeld retourneer ik slechts één identiteitskolom (d.w.z. één rij), maar ik retourneer alle kolommen voor die rij. Ik gebruik verticale uitvoer bij het weergeven van de resultaten, zodat u niet zijwaarts hoeft te scrollen.

SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'Cities';

Resultaat (met verticale uitvoer):

object_id                           | 1970106059
name                                | CityId
column_id                           | 1
system_type_id                      | 56
user_type_id                        | 56
max_length                          | 4
precision                           | 10
scale                               | 0
collation_name                      | NULL
is_nullable                         | 0
is_ansi_padded                      | 0
is_rowguidcol                       | 0
is_identity                         | 1
is_filestream                       | 0
is_replicated                       | 0
is_non_sql_subscribed               | 0
is_merge_published                  | 0
is_dts_replicated                   | 0
is_xml_document                     | 0
xml_collection_id                   | 0
default_object_id                   | 0
rule_object_id                      | 0
seed_value                          | 150
increment_value                     | 10
last_value                          | 180
is_not_for_replication              | 0
is_computed                         | 0
is_sparse                           | 0
is_column_set                       | 0
generated_always_type               | 0
generated_always_type_desc          | NOT_APPLICABLE
encryption_type                     | NULL
encryption_type_desc                | NULL
encryption_algorithm_name           | NULL
column_encryption_key_id            | NULL
column_encryption_key_database_name | NULL
is_hidden                           | 0
is_masked                           | 0
graph_type                          | NULL
graph_type_desc                     | NULL

De meeste van deze kolommen zijn overgenomen van sys.columns , maar sommige zijn uniek voor sys.identity columns . Voor een gedetailleerde beschrijving van deze kolommen, zie de Microsoft-documentatie voor sys.columns en sys.identity columns .

Inclusief tabellen en schema's

Het is je misschien opgevallen dat deze voorbeelden het schema niet in de resultatenset bevatten. Zie Tabellen en schema's opnemen bij het weergeven van de identiteitskolommen als u het schema moet retourneren. Dat artikel bevat ook een voorbeeld van het verwijderen van interne tabellen uit de resultaten.


  1. Laad CSV-gegevens in MySQL in Python

  2. 7-stappenhandleiding voor het gebruik van toegang met Azure Multi-Factor Authentication

  3. Toekomst van Postgres-XL

  4. Witboek CBO-statistieken