Eu tenho um banco de dados SQL ao qual adicionei recentemente dados do Filestream. Agora temos um backup/restauração diário em um servidor de controle de qualidade e, desde que adicionei os dados do Filestream, isso começou a falhar. Então, modifiquei a instrução "restore" para incluir um "with move":
RESTORE DATABASE MyDb
FROM DISK = 'c:\somepath\mydb.bak'
WITH RECOVERY, REPLACE,
MOVE 'MyDb' TO 'f:\sql\MyDb.mdf',
MOVE 'MyDb_Log' TO 'f:\sql\MyBb_log.ldf',
MOVE 'MyDb_Filestream' TO 'f:\sql\MyDb_FS', NOUNLOAD, STATS = 10;
Mas isso está falhando com o seguinte erro:
O arquivo 'MyDb_Filestream' não pode ser restaurado para 'f:\sql\MyDb_FS'. Use WITH MOVE para identificar um local válido para o arquivo.
Pesquisei no Google para encontrar uma solução para isso. Esta resposta diz que você precisa de 3 instruções RESTORE DATABASE separadas, mas não especifica o que são. A resposta aceita aqui indica que você precisa copiar toda a pasta Filestream manualmente, o que acho muito difícil de acreditar. E, de qualquer forma, não deixa claro qual é o processo.
Alguém pode me explicar, em instruções passo a passo à prova de idiotas, como exatamente se deve fazer backup de um banco de dados contendo um fluxo de arquivos, copiá-lo para outro servidor e restaurá-lo lá?
Obrigado!
Acredito que o mistério foi esclarecido. A documentação diz apenas que a conta do SQL Server precisa de acesso total à pasta filestream, mas quando verifiquei quem tinha acesso à pasta DATA principal, vi que a conta SYSTEM também tinha acesso. Dei direitos totais à pasta FS para o usuário SYSTEM e agora não recebo mais esse erro.