Acabei de usar o Works With SQL Server Tool para testar após a compactação usando o script a_hardin-splattne. O teste falhou porque vários índices não foram compactados.
A visualização "sysobjects" inclui alguns, mas não todos os índices. Precisamos de "sysindexes" em vez disso. Graças ao pôster anônimo em aspfaq.com para este insight do índice. Nós também queremos ignorar as funções definidas pelo usuário.
SELECT 'ALTER TABLE [' + name + '] REBUILD WITH (DATA_COMPRESSION = ROW);' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
FROM sysobjects WHERE type = 'U' -- all user tables
UNION
SELECT 'ALTER INDEX [' + i.name + '] ON [' + OBJECT_NAME(i.id) + '] REBUILD WITH (DATA_COMPRESSION = ROW);' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
FROM
sysindexes i
inner join sysobjects o on o.name = OBJECT_NAME(i.id)
WHERE
(i.indid BETWEEN 1 AND 254)
AND (i.Status & 64)=0
AND OBJECTPROPERTY(i.id, 'IsMsShipped') = 0
AND NOT o.type in ('TF','FN')