Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

3 façons d'obtenir une liste de bases de données dans SQL Server (T-SQL)

Vous trouverez ci-dessous trois façons d'utiliser T-SQL pour renvoyer une liste de bases de données dans SQL Server.

Les sp_databases Procédure stockée

Dans SQL Server, les sp_databases procédure stockée répertorie les bases de données qui résident dans une instance de SQL Server ou sont accessibles via une passerelle de base de données.

Voici un exemple d'exécution de cette procédure :

sp_databases;

Exemple de résultat :

+-----------------------+-----------------+-----------+
| 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 l'instruction n'est pas la première d'un lot, vous devrez préfixer le nom de la procédure avec soit EXEC ou EXECUTE .

Les trois commandes suivantes sont donc équivalentes :

sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;

Mais la première ne peut être utilisée que s'il s'agit de la première instruction d'un lot.

Les sys.databases Afficher

Les sys.databases la vue contient une ligne par base de données dans l'instance de SQL Server.

Voici un exemple d'interrogation de cette vue :

SELECT name  
FROM sys.databases;

Exemple de résultat :

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

Cette vue contient beaucoup de colonnes, et vous pouvez la joindre à d'autres vues/tables, c'est donc une option idéale lorsque vous avez besoin de plus d'informations que les sp_databases la procédure revient.

Les sys.sysdatabases Tableau/Vue

Les sys.sysdatabases est l'équivalent de sys.databases .

Nous pourrions donc simplement échanger sys.databases dans l'exemple ci-dessus à sys.sysdatabases pour obtenir le même résultat :

SELECT name  
FROM sys.sysdatabases;

Résultat :

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

Cependant, vous devriez éviter cette option.

Cette table système SQL Server 2000 est incluse dans les versions actuelles de SQL Server en tant que vue pour la compatibilité descendante. Il sera supprimé dans une future version de Microsoft SQL Server. Microsoft recommande d'éviter d'utiliser cette fonctionnalité dans les nouveaux travaux de développement et de prévoir de modifier les applications qui utilisent actuellement cette fonctionnalité.

Donc, si vous rencontrez un ancien script qui fait référence à sys.sysdatabases , vous devriez penser à changer cela en sys.databases .

Serveurs liés

Si vous avez besoin d'obtenir une liste de bases de données à partir d'un serveur lié, utilisez sp_catalogs en passant le nom du serveur lié.

Voir Répertorier toutes les bases de données d'un serveur lié dans SQL Server pour plus d'informations et d'exemples.