Recentemente, adicionei mais núcleos de CPU a um SQL Server e, como aconselham as práticas recomendadas, separei os arquivos tempDB no mesmo número de núcleos(8).
Além disso, junto com as práticas recomendadas, expandi o tamanho dos novos arquivos tempdb, limitei o crescimento automático e reduzi os arquivos originais para corresponder ao tamanho dos novos arquivos.
O problema é que, como eu estava passando de um único núcleo para 8 núcleos, todos os dados do tempdb permaneceram no primeiro arquivo, o que não me permitiria diminuir. Agora eu tenho um arquivo tempdb que é maior que os outros e gostaria de mudar isso.
Suspeito que para corrigir isso, será necessário uma interrupção.
Existe uma maneira de fazer isso sem uma interrupção?
Vale a pena abordar este problema? Eu sei o que as melhores práticas dizem, mas essa instância realmente causa algum problema prático além da feiúra?
EMPTYFILE é só lá é transferir todas as páginas para outros arquivos, para que posteriormente você possa fazer ALTER DATABASE... REMOVE FILE. Isso não parece ser o que queremos aqui.
Eu não me preocuparia com isso, apenas deixaria isso se resolver na próxima reinicialização. Lembre-se de que o tempdb é recriado com base no que sys.master_files diz. Este é o "modelo" para tempdb em relação ao número, posicionamento, tamanho etc dos arquivos.
Você ajusta o tamanho em sys.master_files usando ALTER DATABASE ... MODIFY FILE. Se você quiser ajuda, basta usar SSMS, tempdb, propriedades e ajustar o tamanho de qualquer um dos arquivos tempdb para um tamanho maior . Em seguida, faça o script do comando e ajuste ao seu gosto. (A razão para não especificar um tamanho menor na GUI é que ele irá gerar um DBCC SHRINKFILE, que apenas (tenta) endereçar o tamanho atual para tempdb e não faz nada para o modelo. É perfeitamente possível especificar um tamanho menor que tamanho atual usando ALTER DATABASE para tempdb, pois afetará apenas o "modelo" e não o tamanho atual.
Então como eu não sei o tamanho do tempdb que você está trabalhando, vou fazer um exemplo.
Certifique-se de definir o crescimento automático de todos os arquivos no grupo de arquivos.
Então, para tornar os arquivos do mesmo tamanho, eu reduziria o tempdev para 30.000 MB, como o restante dos arquivos. Eu faria isso em incrementos para que o psiquiatra pudesse ser interrompido e reiniciado sem que o trabalho até agora fosse desperdiçado.
Se eu fosse bloqueado por uma página, tentaria ver se é algo que eu poderia liberar.
E então eu começaria o psiquiatra novamente.
Se ainda estiver bloqueado por uma página, eu definiria o tamanho do arquivo inicial para que o arquivo tenha o mesmo tamanho após a próxima reinicialização do serviço sql.