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

3 formas de obtener una lista de bases de datos en SQL Server (T-SQL)

A continuación se muestran tres formas en las que podemos usar T-SQL para devolver una lista de bases de datos en SQL Server.

Las sp_databases Procedimiento almacenado

En SQL Server, las sp_databases procedimiento almacenado enumera las bases de datos que residen en una instancia de SQL Server o son accesibles a través de una puerta de enlace de base de datos.

Aquí hay un ejemplo de la ejecución de este procedimiento:

sp_databases;

Resultado de ejemplo:

+-----------------------+-----------------+-----------+
| DATABASE_NAME         | DATABASE_SIZE   | REMARKS   |
|-----------------------+-----------------+-----------|
| KrankyKranes          | 16384           | NULL      |
| master                | 6848            | NULL      |
| model                 | 16384           | NULL      |
| msdb                  | 79040           | NULL      |
| Music                 | 16384           | NULL      |
| NarrowNationExporters | 147456          | NULL      |
| tempdb                | 24576           | NULL      |
| WideWorldImporters    | 3575808         | NULL      |
| World                 | 81920           | NULL      |
+-----------------------+-----------------+-----------+

Si la declaración no es la primera de un lote, deberá anteponer el nombre del procedimiento con EXEC o EXECUTE .

Así que los siguientes tres comandos son equivalentes:

sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;

Pero el primero solo se puede usar si es la primera instrucción de un lote.

Las sys.databases Ver

Las sys.databases vista contiene una fila por base de datos en la instancia de SQL Server.

Este es un ejemplo de consulta de esta vista:

SELECT name  
FROM sys.databases;

Resultado de ejemplo:

+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Esta vista contiene muchas columnas y puede unirla con otras vistas/tablas, por lo que es una opción ideal cuando necesita más información que las sp_databases el procedimiento regresa.

Las sys.sysdatabases Tabla/Vista

Las sys.sysdatabases es el equivalente a sys.databases .

Entonces podríamos simplemente intercambiar sys.databases en el ejemplo anterior a sys.sysdatabases para obtener el mismo resultado:

SELECT name  
FROM sys.sysdatabases;

Resultado:

+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Sin embargo, debes evitar esta opción.

Esta tabla del sistema de SQL Server 2000 se incluye en las versiones actuales de SQL Server como una vista de compatibilidad con versiones anteriores. Se eliminará en una versión futura de Microsoft SQL Server. Microsoft recomienda que evitemos usar esta función en nuevos trabajos de desarrollo y planifiquemos modificar las aplicaciones que actualmente usan esta función.

Entonces, si encuentra un script antiguo que hace referencia a sys.sysdatabases , debería pensar en cambiar eso a sys.databases .

Servidores vinculados

Si necesita obtener una lista de bases de datos de un servidor vinculado, use sp_catalogs mientras pasa el nombre del servidor vinculado.

Consulte Enumerar todas las bases de datos de un servidor vinculado en SQL Server para obtener más información y ejemplos.