En SQL Server puede usar el sp_columns_ex
procedimiento almacenado del sistema para devolver información de columna sobre las columnas de un servidor vinculado especificado.
Puede especificar una columna individual o puede especificar todas las columnas de una base de datos, tabla, etc.
Sintaxis
La sintaxis es así:
sp_columns_ex [ @table_server = ] 'table_server' [ , [ @table_name = ] 'table_name' ] [ , [ @table_schema = ] 'table_schema' ] [ , [ @table_catalog = ] 'table_catalog' ] [ , [ @column_name = ] 'column' ] [ , [ @ODBCVer = ] 'ODBCVer' ]
El @table_server
argumento es el único argumento requerido. Este es el nombre del servidor vinculado del que desea la información de la tabla.
Los otros argumentos son opcionales y cubro la mayoría de ellos en los siguientes ejemplos. Para obtener más información sobre estos argumentos, consulte la documentación de Microsoft.
Ejemplo 1:devolver una columna específica
El siguiente ejemplo devuelve información sobre una columna específica.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'ArtistName';
Resultado (usando salida vertical):
TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | Artists COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39
En este caso, el nombre del servidor es Homer
, el nombre de la base de datos es Music
, el nombre de la tabla es Artists
, el esquema de la tabla es dbo
y el nombre de la columna es ArtistName
.
Esto también podría hacerse así:
EXEC sp_columns_ex 'Homer', 'Artists', 'dbo', 'Music', 'ArtistName';
Ejemplo 2:especificar solo una tabla
En este ejemplo solo especifico el nombre de la tabla.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists';
Esto devuelve información sobre todas las columnas en Artistas mesa.
Ejemplo 3:especifique la base de datos y el nombre de la columna
En este ejemplo, especifico la base de datos y la columna, pero no la tabla.
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music', @column_name = 'ArtistName';
Resultados (usando salida vertical):
-[ RECORD 1 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | Artists COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 2 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | BluesAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 3 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | JazzAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 4 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | RockAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39
Esto devolvió tres columnas más. Estos resultan ser de tres vistas diferentes (la base de datos tiene tres vistas con un ArtistName
columna:BluesAlbums
, JazzAlbums
y RockAlbums
).
Ejemplo 4:especificar solo una base de datos
Aquí solo especifico la base de datos:
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music';
No mostraré los resultados aquí porque devolvió casi 6000 filas. La mayoría de estos eran del sys
esquema de tabla.
Ejemplo 5:especificar un esquema de tabla
El siguiente ejemplo limita los resultados a un esquema de tabla específico (dbo
).
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo';
Esto devolvió un conjunto de resultados mucho más pequeño que el ejemplo anterior. Todavía es bastante grande, así que no lo mostraré aquí.
Ejemplo 6:caracteres comodín
También puede utilizar caracteres comodín. Aquí hay un ejemplo del uso de %
carácter comodín:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%';
Esto devuelve todas las columnas que comienzan con Ar
. En mi caso, devolvió dos
ArtistId
columnas y cuatro
ArtistName
columnas.
Podría reducir esto:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%Name';
Esto devolvió solo el ArtistName columnas.
Sin embargo, si elimino el r
:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'A%Name';
Ahora obtengo cuatro columnas adicionales llamadas AlbumName (así como el ArtistName columnas).