@Enlighted_one

Как в запросе применить инструкции к каждому найденному выражению?

Уменьшаю БД. Решил применить метод сжатия таблиц, но применять его ко всем таблицам в базе вручную это долго. Написал такой запрос. Но он отрабатывает с последним результатом запроса. Как сделать, чтобы он применялся к каждой таблице в БД?
use database;
DECLARE @sql NVARCHAR(MAX) ;
select @sql = 'alter table ' + t.TABLE_NAME + ' REBUILD WITH (DATA_COMPRESSION=ROW)'
FROM INFORMATION_SCHEMA.TABLES t
PRINT @sql;
EXEC sp_executesql @sql
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
из очевидных - цикл/курсор
из менее очевидных

use database;
DECLARE @sql NVARCHAR(MAX) ;
set @sql=''
select @sql = @sql+';'+ 'alter table ' + t.TABLE_NAME + ' REBUILD WITH (DATA_COMPRESSION=ROW)'
FROM INFORMATION_SCHEMA.TABLES t
PRINT @sql;
EXEC sp_executesql @sql


(но следует учитывать что sqlexec подавится большим sql)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы