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.