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

Cómo usar el procedimiento almacenado 'sp_server_info' en SQL Server

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