webentwicklung-frage-antwort-db.com.de

Listen Sie alle Datenbanken auf einem SQL Server in der Reihenfolge auf, in der sie erstellt wurden

Ich habe wahrscheinlich mehr als 100 Datenbanken in dieser einen Instanz von SQL Server (2005). Ich möchte sie in der Reihenfolge ihres Erstellungsdatums oder noch besser in der Reihenfolge des Datums der letzten Änderung einer Tabelle auflisten.

Gibt es eine SELECT-Abfrage, die ich schreiben kann, und ebenso wichtig, aus welchem ​​Kontext schreibe ich sie und mit welchen Berechtigungen muss ich sie ausführen?

11
John Dunagan

Sie können diese Abfrage leicht in die Katalogsicht sys.databases schreiben

SELECT * FROM sys.databases
ORDER BY create_date 

aber leider gibt es kein Äquivalent für das "letzte Änderungsdatum", das mir bekannt ist ...

Dies sollte von jeder Datenbank auf diesem Server aus funktionieren - egal in welcher Datenbank Sie sich befinden, diese sys-Katalogsichten sollten von überall aus zugänglich sein.

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

dies ist nicht genau eine Auswahl, aber zumindest haben Sie das, was Sie wollen. Ich bin db_owner in einer unserer Datenbanken und wahrscheinlich nichts eindrucksvolles Server-weit, so dass es nicht sehr anspruchsvoll ist.

2
nimdil

Dies sollte Ihnen nahe kommen, was Sie wollen.

SELECT name, crdate 
FROM master..sysdatabases
1
sasonic