Uma reorganização e redução nunca é realmente recomendada.
Se você pode colocar os aplicativos que o banco de dados está servindo offline, é possível acelerar o processo e reduzir a fragmentação do índice removendo todos os índices e restrições de chave primária / estrangeira antes do encolhimento (isso significa que há menos dados a serem movidos, pois somente o as páginas de dados serão embaralhadas e não as páginas de índice agora inexistentes, acelerando o processo) e recriar todos os índices e chaves.
Recriar os índices após o encolhimento significa que eles não devem ser significativamente fragmentados, e tê-los desaparecidos durante o encolhimento significa que reconstruí-los não deixará muitos pequenos "buracos" na alocação da página nos arquivos que podem convidar a fragmentação posteriormente.
Outra opção, se você pode offline os aplicativos, é migrar todos os dados para um novo banco de dados da mesma estrutura. Se o seu processo de construção for sólido, você poderá criar rapidamente esse banco de dados em branco, se não criar um a partir do banco de dados atual (restaure um backup do atual, trunque / exclua todo o conteúdo das tabelas e execute uma redução completa).
Você ainda pode descartar todos os índices no destino e recriá-los posteriormente, pois isso pode ser muito mais eficiente ao alterar muitos dados indexados (100% nesse caso). Para acelerar o processo de cópia, leve os arquivos de dados do banco de dados de destino em diferentes unidades físicas para a fonte (a menos que você esteja usando SSDs; nesse caso, não precisará se preocupar em reduzir os movimentos da cabeça), é possível movê-los para o local de origem quando terminar.
Além disso, se criar o destino como novo (em vez de apagar uma cópia da fonte), crie-o com um tamanho inicial que conterá todos os dados atuais mais alguns meses de crescimento - que fará com que os dados copiem um pouco mais rápido novamente, pois ele não alocará novo espaço de vez em quando ao longo do processo.
Isso pode ser melhor do que usar a redução, porque a migração dos dados para um banco de dados novo replica a ação pretendida da operação de redução, mas potencialmente com muito menos fragmentação (que é a consequência não intencional de uma reorganização e redução). Um psiquiatra simplesmente pega os blocos perto do final do arquivo e os coloca no primeiro espaço mais próximo do início, sem fazer nenhum esforço para manter os dados relacionados juntos.
Suspeito que o resultado também será mais eficiente em termos de espaço, pois provavelmente haverá menos páginas usadas parcialmente depois. Um psiquiatra apenas moverá as páginas usadas parcialmente, é mais provável que a movimentação dos dados resulte em páginas inteiras, especialmente se você inserir no destino na ordem da chave / índice clusterizado de uma tabela (onde a tabela possui uma) e criar outros índices depois que todos os dados foram migrados.
É claro que, se você não pode desativar os aplicativos, apenas a redução é a sua única opção; se você realmente precisar recuperar o espaço, faça isso. Dependendo dos seus dados, padrões de acesso, tamanho comum do conjunto de trabalho, quanta RAM o servidor possui e assim por diante, a fragmentação interna extra pode não ser tão significativa no final.
Para a operação de cópia, o SSIS ou o T-SQL base também funcionariam (a opção SSIS pode ser menos eficiente, mas potencialmente mais fácil de manter posteriormente). Se você criar os relacionamentos FK no final, juntamente com os índices, poderá executar um simples "para cada tabela, copiar" em ambos os casos. É claro que para um caso único, uma redução + reorganização provavelmente também é boa, mas eu só gosto de assustar as pessoas para que nunca considerem a redução regular! (Eu sei que as pessoas agendam diariamente).