Melhor maneira de mover um arquivo de log no SQL Server 2005

1

Obviamente, você pode separar o dbs inteiro e reconectar usando sp_attach e sp_detach. Existe uma maneira on-line para fazer isso, teve um google rápido, mas não consegue ver nada.

    
por alimack 22.07.2009 / 15:28

4 respostas

0

Se você quiser mover o arquivo de log sem ter que colocar um banco de dados offline, existe uma maneira que usei antes. Eu só espero lembrar corretamente:

  1. Adicione um novo arquivo de log no novo local com algo como:

    ALTER DATABASE para ADD LOG FILE (NOME = NewLog, FILENAME = 'YourNewPhysicalPath', SIZE = 100MB, outras opções ...);

  2. Esvazie o arquivo de log antigo com:

    USE foo; DBCC SHRINKFILE (OldLog, EMPTYFILE);

  3. Faça backup de log com o BACKUP LOG foo ...

  4. Remova o arquivo de log antigo com:

    ALTER DATABASE foo REMOVER ARQUIVO OldLog;

Se o último disser que você não pode remover porque o arquivo não está vazio, tente executar 2 e 3 novamente e depois 4.

EDITAR: Bem, acontece que eu não lembrei corretamente ... NÃO FUNCIONARÁ desta maneira e como gbn apontou você não pode "esvaziar" o arquivo de log via SHRINKFILE (mas não era meu objetivo de qualquer forma - eu só queria marcar o arquivo como "não para uso", por isso não é reutilizado e pode ser descartado posteriormente. Eu acho que uma técnica semelhante ainda é possível para qualquer arquivo de log adicional que você tenha além do primeiro, mas vou postar sobre isso quando tiver uma chance de pesquisar isso.

    
por 22.07.2009 / 17:04
4

A melhor maneira, que exigirá algum tempo de inatividade, é usar ALTER DATABASE ... SET OFFLINE. Existem várias boas razões para isso.

  1. O proprietário do banco de dados não é alterado. Isso pode ter implicações em relação às permissões implícitas e ao encadeamento de propriedade entre bancos de dados.
  2. Configurações como FILESTREAM (em 2008) ou configuração específica de banco de dados (como encadeamento de propriedade de banco de dados cruzado) não são perdidas.
  3. O banco de dados não é reconectado usando o nome incorreto. Dedos gordos ainda acontecem.

Mais aqui:

Como mover um banco de dados do SQL Server dentro da mesma instância sem perder as configurações

    
por 24.07.2009 / 15:11
2

Desculpe, não há um método on-line "seguro".

Você precisa tirar o banco de dados off-line ou desconectá-lo.

Você não pode "esvaziar" um arquivo de log como se fosse um arquivo de dados.

MS KB 224071

    
por 22.07.2009 / 20:35
1

Você pode fazer um backup e restaurar o backup. Durante a restauração, você pode especificar um local diferente para o log de transações.

    
por 22.07.2009 / 15:37