有許多上述不正確的代碼段。我修復了上面的SQLEagle代碼片段,現在你應該看到最後修改的日期 - 我相信修改的日期應該來自sys.objects,而不是sys.tables。我看到安德魯阿諾德評論了Debbie的代碼片段「完全一樣」。 Andrew顯然沒有運行這兩個代碼段,或者他會知道Debbie的結果比WaterCooler的貢獻在實際提供幾乎正確的結果方面獲得了更好的結果,但是可以按照以下進一步改進。
DECLARE @sqlString NVARCHAR(MAX) ,
@union NVARCHAR(MAX) ,
@name NVARCHAR(50),
@Counter AS Int
SET @sqlString = ''
SET @union = ''
SET @counter = 0
DECLARE crs CURSOR
FOR
SELECT Name
FROM sys.databases
WHERE state = 0
OPEN crs
FETCH NEXT FROM crs INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @counter = @counter + 1
SET @sqlString = @sqlString + @union
SET @sqlString = @sqlString + '
SELECT *
FROM (
SELECT TOP 1
''' + @name + ''' as DBName, modify_date
FROM [' + @name + '].sys.objects
ORDER BY modify_date DESC
) as Table' + CAST(@Counter AS VARCHAR(20))
SET @union = ' UNION '
FETCH NEXT FROM crs INTO @name
END
--PRINT @sqlString
SET @sqlString = @sqlString + ' ORDER BY DBName ASC'
CLOSE crs ;
DEALLOCATE crs ;
EXEC(@sqlString)
最簡單的解決方案不是切換到壓縮的備份軟件嗎? – Thomas 2010-10-19 15:36:52
@Thomas:我已經使用了壓縮備份 – 2010-10-19 15:44:25