O grupo de arquivos não pode ser removido porque não é um erro vazio sem arquivos

2

Quando tento remover o 'MYFILEGROUP', recebo o erro de que o grupo de arquivos não pode ser removido porque não está vazio. Já removi todas as tabelas, índices e excluí todos os arquivos associados ao grupo. Para verificar, eu corri os scripts abaixo:

sp_helpfilegroup

retorna 0 para o contador em "MYFILEGROUP".

select o.name, s.groupname
from sysobjects o
join sysindexes i on o.id = i.id
join sysfilegroups s on i.groupid = s.groupid
where groupname = 'MYFILEGROUP'

não retorna linhas ...

Eu tenho mais algumas informações. Quando eu corro

dbcc checkfilegroup('MYFILEGROUP')

O resultado lista todas as chaves primárias com um aviso informando:

Cannot process rowset ID 72057597605511168 of object "TableName" (ID 2071414),
index "PK_TableName" (ID 1), because it resides on filegroup "PRIMARY" (ID 1),
which was not checked.

Esse comportamento é esperado ou indica um problema com as tabelas do sistema? Se é um problema, então como eu consertaria isso? Eu removi todas as chaves, índices e restrições estrangeiros do banco de dados, deixando apenas as tabelas. Ainda erro quando tento remover o "MYFILEGROUP" vazio.

    
por Mindy 14.01.2012 / 04:08

3 respostas

3

é possível que o MYFILEGROUP tenha um objeto de parição? Se este for o caso, as exibições de compatibilidade que você usar não retornarão nenhum resultado (sql server 2000 não tem objetos de partição!). A mensagem que você está recebendo sobre pular o objeto para verificar é o comportamento esperado para 2008, quando o checkdb verifica uma tabela / índice paritioned, veja este postagem no blog . Você consegue alguma coisa com essa consulta?

select * from sys.partitions p
inner join sys.allocation_units a on a.container_id = p.hobt_id
inner join sys.filegroups f on f.data_space_id = a.data_space_id
where f.name='myfilegroup'
    
por 17.01.2012 / 05:42
0

Isso pode acontecer se uma tabela que estava usando o grupo de arquivos tiver estatísticas definidas nesse grupo de arquivos. Você pode saber se tem alguma estatística pendente para esse grupo de arquivos se executar essa consulta e substituir X por seu ID de grupo de arquivos:

select object_name(id) AS TableName, * from dbo.sysindexes where groupid = X

Uma vez que você sabe o nome da tabela, você pode executar DROP STATISTICS e esperamos que depois você possa remover o grupo de arquivos.

    
por 14.01.2012 / 04:21
0

Algo no fundo da minha mente me diz que você precisa fazer um backup entre remover o arquivo e remover o grupo de arquivos. Além disso, quando eu fiz isso antes, eu vi uma incompatibilidade entre sys.database_files e sys.master_files (ou seja, uma das exibições tinha o arquivo nele, o outro não), mas pelo menos isso diz a você que o servidor ainda está ciente do arquivo em alguma capacidade. De qualquer forma, faça um backup) ou deixe seu agendado regularmente acontecer e tente remover o grupo de arquivos novamente.

    
por 14.01.2012 / 15:30