IF object_id(N'tempdb..#tblResults', N'u') IS NOT NULL DROP TABLE #tblResults IF object_id(N'tempdb..#tblResults1', N'u') IS NOT NULL DROP TABLE #tblResults1 -- Create the temporary table... CREATE TABLE #tblResults ( [name] NVARCHAR(60) ,[rows] INT ,[reserved] VARCHAR(18) ,[reserved_int] INT DEFAULT(0) ,[data] VARCHAR(18) ,[data_int] INT DEFAULT(0) ,[index_size] VARCHAR(18) ,[index_size_int] INT DEFAULT(0) ,[unused] VARCHAR(18) ,[unused_int] INT DEFAULT(0) ) CREATE TABLE #tblResults1 ( [name] NVARCHAR(60) ,[rows] INT ,[reserved] VARCHAR(18) ,[data] VARCHAR(18) ,[index_size] VARCHAR(18) ,[unused] VARCHAR(18) ) DECLARE @tabname VARCHAR(100) DECLARE cur CURSOR FOR SELECT TOP 1000 s.NAME + '.' + t.NAME FROM sys.tables t INNER JOIN sys.schemas s ON t.[schema_id] = s.[schema_id] WHERE [t].[type] = 'U' OPEN cur FETCH NEXT FROM cur INTO @tabname WHILE @@fetch_status >= 0 BEGIN TRUNCATE TABLE #tblResults1 INSERT INTO #tblResults1 ( [name] ,[rows] ,[reserved] ,[data] ,[index_size] ,[unused] ) EXEC sp_spaceused @tabname INSERT INTO #tblResults ( [name] ,[rows] ,[reserved] ,[data] ,[index_size] ,[unused] ) SELECT TOP 1 @tabname ,[rows] ,[reserved] ,[data] ,[index_size] ,[unused] FROM #tblResults1 FETCH NEXT FROM cur INTO @tabname END CLOSE cur DEALLOCATE cur UPDATE #tblResults SET [reserved_int] = CAST(SUBSTRING([reserved], 1, CHARINDEX(' ', [reserved])) AS INT) ,[data_int] = CAST(SUBSTRING([data], 1, CHARINDEX(' ', [data])) AS INT) ,[index_size_int] = CAST(SUBSTRING([index_size], 1, CHARINDEX(' ', [index_size])) AS INT) ,[unused_int] = CAST(SUBSTRING([unused], 1, CHARINDEX(' ', [unused])) AS INT) SELECT * FROM #tblResults ORDER BY reserved_int DESC --В определении элементов для обработки в курсоре, можно задать критерии отбора таблиц --для компрессии, как например в данном примере это 10 наиболее тяженовесных таблиц. DECLARE cur CURSOR FOR SELECT TOP 10 NAME FROM #tblResults ORDER BY reserved_int DESC OPEN cur FETCH NEXT FROM cur INTO @tabname WHILE @@fetch_status >= 0 BEGIN PRINT 'compressed ' + + @tabname EXEC ( 'ALTER TABLE ' + @tabname + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)' ) FETCH NEXT FROM cur INTO @tabname END CLOSE cur DEALLOCATE cur
«Счастье — это когда утром с радостью идешь на работу, а вечером с радостью идешь домой» /Юрий Никулин/
Здесь я публикую небольшие мои заметки, а также интересные ссылки, все что связанно с моей профессией. Для перехода на персональный сайт, используйте ссылку http://k-semenenko.blogspot.com
суббота, 28 апреля 2012 г.
Компрессия пользовательских таблиц
Подписаться на:
Сообщения (Atom)