CREATE TABLE #VLF_temp (FileID varchar(3), FileSize numeric(20,0), StartOffset bigint, FSeqNo bigint, Status char(1), Parity varchar(4), CreateLSN numeric(25,0)) CREATE TABLE #VLF_db_total_temp (name sysname, vlf_count int) /*Declare a cursor to loop through all current databases*/ DECLARE db_cursor CURSOR READ_ONLY FOR SELECT name FROM master.dbo.sysdatabases DECLARE @name sysname, @stmt varchar(40) OPEN db_cursor FETCH NEXT FROM db_cursor INTO @name WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) BEGIN /*insert the results into the first temp table*/ INSERT INTO #VLF_temp EXEC ('DBCC LOGINFO ([' + @name + ']) WITH NO_INFOMSGS') /*insert the db name and count into the second temp table*/ INSERT INTO #VLF_db_total_temp SELECT @name, COUNT(*) FROM #VLF_temp /*truncate the first table so we can get the count for the next db*/ TRUNCATE TABLE #VLF_temp END FETCH NEXT FROM db_cursor INTO @name END /*close and deallocate cursor*/ CLOSE db_cursor DEALLOCATE db_cursor /*we are only interested in the top ten rows because having more could look funky in an Excel graph*/ /*we are currently only interested in db's with more than 50 VLFs*/ SELECT TOP 10 @@servername as [ServerName], name as [DBName], vlf_count as [VLFCount] FROM #VLF_db_total_temp WHERE vlf_count > 50 ORDER BY vlf_count DESC /*drop the tables*/ DROP TABLE [#VLF_temp] DROP TABLE [#VLF_db_total_temp]
21/10/2013
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment