Estou tendo um problema ao tentar migrar dados de um grupo de arquivos para esvaziar e remover o grupo de arquivos. Movi todos os índices/tabelas e todos os esquemas de partição usando o grupo de arquivos para o novo grupo de arquivos, mas não consigo remover o último arquivo do grupo de arquivos antigo. O erro que recebo é que o arquivo não está vazio.
Eu tentei o truque EMPTYFILE, mas isso não funciona, pois diz que ainda há dados no arquivo, o que parece ser verdade, pois a consulta de sys.allocation_units mostra cerca de 30 MB de dados ainda no arquivo. Consultar índice, partição, objeto e outros DMVs não relata nada que ainda esteja usando esse grupo de arquivos como espaço de dados.
Que outros DMVs/DMFs existem para me mostrar quais são os dados deixados no arquivo?
SQL Server 2016 Enterprise Edition
Portanto, nunca consegui determinar por que as páginas alocadas não puderam ser vinculadas ao objeto subjacente usando sys.allocation_units, mas acabei conseguindo identificar os objetos usando uma versão modificada de um script de Paul Randal e DBCC PAGE.
Em primeiro lugar, executando este script (que é baseado no sp_AllocationMetadata de Paul Randal, mas modificado para filtrar com base no nome do grupo de arquivos e não no nome do objeto):
A saída me deu uma lista de unidades de alocação e os identificadores de página associados:
Esses resultados podem ser verificados em relação ao DBCC PAGE para identificar o objeto subjacente:
Isso gera alguns metadados, especificamente uma linha que diz
Metadata: ObjectId = <object id>
. Este ID de objeto faz referência ao objeto ao qual esta página de dados está relacionada.No meu caso, eu tinha cerca de 300 unidades de alocação para trabalhar. A parte preocupante é que os objetos identificados foram construídos em esquemas de partição que nunca referenciaram o grupo de arquivos em questão como um espaço de dados de destino, mas de alguma forma os dados acabaram alocados nesses arquivos. De qualquer forma, a reconstrução dos índices desalocou as páginas do grupo de arquivos em questão e os arquivos e o grupo de arquivos podem ser removidos.