web-dev-qa-db-fra.com

Répertoriez toutes les bases de données sur un serveur SQL dans l'ordre de leur création.

J'ai probablement plus de 100 bases de données sur cette instance unique de SQL Server (2005). Je voudrais les énumérer dans l'ordre de leurs dates de création, ou mieux, dans l'ordre de la date de la dernière modification apportée à une table.

Existe-t-il une requête SELECT que je peux écrire et, tout aussi important, dans quel contexte je l'écris et avec quelles autorisations ai-je besoin pour l'exécuter?

11
John Dunagan

Vous pouvez facilement écrire cette requête dans la vue catalogue sys.databases

SELECT * FROM sys.databases
ORDER BY create_date 

mais malheureusement, il n'y a pas d'équivalent pour la "date de la dernière modification" dont je suis au courant ...

Cela devrait fonctionner à partir de n'importe quelle base de données sur ce serveur. Peu importe la base de données dans laquelle vous vous trouvez, ces vues de catalogue sys doivent être accessibles de n'importe où.

16
marc_s
create table #db_name (db_name nvarchar(128), last_change datetime);
exec sp_MSForEachDB 'Use ?; insert into #db_name (db_name, last_change) select ''?'', max(modify_date) from sys.tables'
select * from #db_name order by last_change desc

ce n'est pas exactement un choix mais au moins vous avez ce que vous voulez. Je suis propriétaire de l'une de nos bases de données et probablement rien d'impressionnant à l'échelle du serveur, donc ce n'est pas très exigeant.

2
nimdil

Cela devrait vous rapprocher de ce que vous voulez.

SELECT name, crdate 
FROM master..sysdatabases
1
sasonic