2015-01-03 1 views
0

Мне нужно установить DataCompressionOptions в None для всех таблиц в базе данных.Как настроить сжатие на «none» для всех таблиц в базе данных SQL Server

Я могу запустить

USE [MyDatabase] 

ALTER TABLE [dbo].[Tablex] 
REBUILD PARTITION = ALL 
WITH (DATA_COMPRESSION = NONE) 

И это отлично работает, но мне нужно, чтобы установить это в течение примерно 50 таблиц.

+1

'SELECT 'ALTER TABLE DBO. + QUOTENAME (имя) + 'REBUILD ...;' FROM sys.tables WHERE schema_id = 1; ' –

+0

Привет, Аарон, Спасибо, что ответили. Я выполнил запрос и выполнил его успешно, но когда я пошел проверять сжатие, он все еще был установлен на «Страница» – Mark

+0

, выполняющий этот запрос, создаст скрипт только для вас, вам нужно скопировать вставку скрипта и выполнить его или использовать курсор сделать это для вас, как я показал в своем ответе –

ответ

1
USE [MyDatabase] 
GO 

DECLARE @Sql NVARCHAR(MAX); 
DECLARE @cur CURSOR; 

SET @Cur = CURSOR FOR 
SELECT 'ALTER TABLE ' + QUOTENAME(s.name)+ '.' + QUOTENAME(t.name) 
     + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = NONE)' 
FROM sys.tables t 
INNER JOIN sys.schemas s ON s.schema_id = t.schema_id 

OPEN @cur 

FETCH NEXT FROM @Cur INTO @Sql 

WHILE (@@FETCH_STATUS = 0) 
BEGIN 

    EXEC sp_executesql @Sql 

    FETCH NEXT FROM @Cur INTO @Sql 
END 

CLOSE @cur 
DEALLOCATE @cur 
+0

Это отлично работало. Спасибо Аарону и Али Али. – Mark

0

Попробуйте

DECLARE @sql NVARCHAR(max)='' 

SELECT @sql = @sql + 'ALTER TABLE ' + QUOTENAME(s.name) + '.' 
       + QUOTENAME(t.name) 
       + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = NONE)' 
       + char(10) + char(13) 
FROM sys.tables t 
     INNER JOIN sys.schemas s 
       ON s.schema_id = t.schema_id 
WHERE T.NAME IN ('<table_list>') 

EXEC sp_executesql 
    @sql 
Смежные вопросы