sql >> Base de Datos >  >> RDS >> Sqlserver

Listar todas las columnas de identidad en una base de datos de SQL Server:sys.identity_columns

Puede usar T-SQL para devolver una lista de columnas de identidad en una base de datos en SQL Server.

Puede hacer esto usando sys.identity_columns vista del catálogo del sistema.

Ejemplo 1:uso básico

Aquí hay un ejemplo para demostrarlo.

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

Resultado:

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

Usé mi Test base de datos para este ejemplo. Elegí este porque previamente creé columnas de identidad con varios valores de incremento inicial.

En este ejemplo utilicé OBJECT_NAME() función para obtener el nombre del objeto del object_id columna. En este caso es el nombre de la tabla. En otras palabras, la primera columna enumera el nombre de la tabla y la segunda columna enumera la columna de identidad.

Ejemplo 2:lista de todas las columnas

En el ejemplo anterior, solo devolví un puñado de columnas. Esto se debe a que sys.identity_columns devuelve muchas columnas.

En este ejemplo, devuelvo solo una columna de identidad (es decir, una fila), pero devuelvo todas las columnas para esa fila. Uso la salida vertical cuando muestro los resultados para que no te veas obligado a desplazarte hacia los lados.

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

Resultado (usando salida vertical):

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

La mayoría de estas columnas se heredan de sys.columns , pero algunos son exclusivos de las sys.identity columns . Para obtener una descripción detallada de estas columnas, consulte la documentación de Microsoft para sys.columns y sys.identity columns .

Incluyendo tablas y esquemas

Es posible que haya notado que estos ejemplos no incluyen el esquema en el conjunto de resultados. Consulte Incluir tablas y esquemas al enumerar las columnas de identidad si necesita devolver el esquema. Ese artículo también incluye un ejemplo de eliminación de tablas internas de los resultados.