En SQL Server el sp_server_info
El procedimiento almacenado del sistema devuelve una lista de nombres de atributos y valores coincidentes para SQL Server, la puerta de enlace de la base de datos o el origen de datos subyacente. Devuelve un subconjunto de la información proporcionada por SQLGetInfo en ODBC.
Básicamente, le permite ver información sobre SQL Server.
Sintaxis
La sintaxis es así:
sp_server_info [[@attribute_id = ] 'attribute_id']
El (opcional) @attribute_id
El argumento le permite limitar los resultados a un solo atributo específico.
Ejemplo 1:devolver todos los atributos
En este ejemplo, ejecuto el procedimiento almacenado sin pasar ningún argumento.
EXEC sp_server_info;
También se puede ejecutar así:
sp_server_info;
Aquí está el resultado en mi instancia de SQL Server 2019:
+----------------+------------------------+---------------------------------------------------------------------+ | attribute_id | attribute_name | attribute_value | |----------------+------------------------+---------------------------------------------------------------------| | 1 | DBMS_NAME | Microsoft SQL Server | | 2 | DBMS_VER | Microsoft SQL Server 2019 - 15.0.1800.32 | | 10 | OWNER_TERM | owner | | 11 | TABLE_TERM | table | | 12 | MAX_OWNER_NAME_LENGTH | 128 | | 13 | TABLE_LENGTH | 128 | | 14 | MAX_QUAL_LENGTH | 128 | | 15 | COLUMN_LENGTH | 128 | | 16 | IDENTIFIER_CASE | MIXED | | 17 | TX_ISOLATION | 2 | | 18 | COLLATION_SEQ | charset=iso_1 sort_order=nocase_iso charset_num=1 sort_order_num=52 | | 19 | SAVEPOINT_SUPPORT | Y | | 20 | MULTI_RESULT_SETS | Y | | 22 | ACCESSIBLE_TABLES | Y | | 100 | USERID_LENGTH | 128 | | 101 | QUALIFIER_TERM | database | | 102 | NAMED_TRANSACTIONS | Y | | 103 | SPROC_AS_LANGUAGE | Y | | 104 | ACCESSIBLE_SPROC | Y | | 105 | MAX_INDEX_COLS | 16 | | 106 | RENAME_TABLE | Y | | 107 | RENAME_COLUMN | Y | | 108 | DROP_COLUMN | Y | | 109 | INCREASE_COLUMN_LENGTH | Y | | 110 | DDL_IN_TRANSACTION | Y | | 111 | DESCENDING_INDEXES | Y | | 112 | SP_RENAME | Y | | 113 | REMOTE_SPROC | Y | | 500 | SYS_SPROC_VERSION | 15.00.1800 | +----------------+------------------------+---------------------------------------------------------------------+
Ejemplo 2:especificar un atributo
Si solo está interesado en un atributo, puede pasar el ID de ese atributo. Hacer esto da como resultado que solo se devuelva la fila de ese atributo.
EXEC sp_server_info 500;
También se puede hacer así:
sp_server_info 500; sp_server_info @attribute_id = 500; EXEC sp_server_info @attribute_id = 500;
Resultado:
+----------------+-------------------+-------------------+ | attribute_id | attribute_name | attribute_value | |----------------+-------------------+-------------------| | 500 | SYS_SPROC_VERSION | 15.00.1800 | +----------------+-------------------+-------------------+
En este ejemplo, devuelvo el atributo número 500, que especifica la versión de los procedimientos almacenados del catálogo implementados actualmente.
Ejemplo 3:ejecutar sp_server_info en un servidor vinculado
En este ejemplo, ejecuto sp_server_info
a través de una consulta de transferencia en un servidor vinculado llamado Homer.
SELECT * FROM OPENQUERY( Homer, 'EXEC sp_server_info 500' );
Resultado:
+----------------+-------------------+-------------------+ | attribute_id | attribute_name | attribute_value | |----------------+-------------------+-------------------| | 500 | SYS_SPROC_VERSION | 14.00.3048 | +----------------+-------------------+-------------------+
Ejemplo 4:especificar qué columnas se muestran
Un beneficio adicional de OPENQUERY()
es que puede reducir las columnas devueltas por el procedimiento almacenado.
Ejemplo:
SELECT attribute_name, attribute_value FROM OPENQUERY( Homer, 'EXEC sp_server_info 500' );
Resultado:
+-------------------+-------------------+ | attribute_name | attribute_value | |-------------------+-------------------| | SYS_SPROC_VERSION | 14.00.3048 | +-------------------+-------------------+