Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Alle Identitätsspalten in einer SQL Server-Datenbank auflisten:sys.identity_columns

Sie können T-SQL verwenden, um eine Liste von Identitätsspalten in einer Datenbank in SQL Server zurückzugeben.

Sie können dies mit sys.identity_columns tun Systemkatalogansicht.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

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

Ich habe meinen Test verwendet Datenbank für dieses Beispiel. Ich habe mich für diese entschieden, weil ich zuvor Identitätsspalten mit verschiedenen Seed-Inkrementwerten erstellt habe.

In diesem Beispiel habe ich das OBJECT_NAME() verwendet Funktion, um den Namen des Objekts aus der object_id zu erhalten Säule. In diesem Fall ist es der Tabellenname. Mit anderen Worten, die erste Spalte enthält den Tabellennamen und die zweite Spalte die Identitätsspalte.

Beispiel 2 – Alle Spalten auflisten

Im vorherigen Beispiel habe ich nur eine Handvoll Spalten zurückgegeben. Dies liegt daran, dass sys.identity_columns gibt viele Spalten zurück.

In diesem Beispiel gebe ich nur eine Identitätsspalte (d. h. eine Zeile) zurück, aber ich gebe alle Spalten für diese Zeile zurück. Ich verwende bei der Anzeige der Ergebnisse eine vertikale Ausgabe, damit Sie nicht gezwungen sind, seitwärts zu scrollen.

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

Ergebnis (bei vertikaler Ausgabe):

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

Die meisten dieser Spalten werden von sys.columns geerbt , aber einige sind einzigartig für sys.identity columns . Eine detaillierte Beschreibung dieser Spalten finden Sie in der Microsoft-Dokumentation für sys.columns und sys.identity columns .

Einschließlich Tabellen und Schemas

Sie haben vielleicht bemerkt, dass diese Beispiele das Schema nicht in der Ergebnismenge enthalten. Siehe Einschließen von Tabellen und Schemas beim Auflisten der Identitätsspalten, wenn Sie das Schema zurückgeben müssen. Dieser Artikel enthält auch ein Beispiel für das Entfernen interner Tabellen aus den Ergebnissen.