Quando um usuário desconecta um banco de dados do MS SQL Server, ele define o proprietário dos dados e arquivos de log para esse usuário. Ele também remove todas as permissões de não proprietário dos arquivos. Isso é parcialmente explicado em http://msdn.microsoft.com/en-us/library/ms189128.aspx
Eu testei isso nas seguintes versões do SQL Server
- 2005
- 2008
- 2008 R2
É possível alterar esse comportamento para que as permissões de arquivo sejam mantidas quando um banco de dados é desanexado?
Embora não seja uma resposta concreta, não encontro nenhuma opção de configuração ou configuração para substituir esse comportamento. Parece que está assado.
Em todos os lugares , desanexar e anexar bancos de dados é mencionado na documentação aponta para a página Protegendo dados e arquivos de log mencionada acima. O cenário nesta página deixa bem claro o que está acontecendo e por que os arquivos devem ser protegidos como tal.
Talvez você possa usar um usuário ou conta de serviço diferente para executar a operação? SE o arquivo pertencer à conta adequada (como a conta de serviço do SQL Server), tudo isso pode não ser um problema.
Por design, não é possível alterar esse comportamento por meio do SQL Server Management Studio (SSMS). Existem documentos da Microsoft ( aqui e aqui ) que explicam “claramente” esse comportamento. Embora os artigos estejam relacionados ao MSSQL 2008, ainda é válido para o MSSQL 2005/2012 (é necessário verificar para 2014): “As permissões de acesso a arquivos são definidas durante várias operações de banco de dados, incluindo desanexar ou anexar um banco de dados. Para obter informações sobre as permissões de arquivo definidas sempre que um banco de dados é desanexado e anexado, consulte Protegendo dados e arquivos de log nos manuais online do SQL Server 2008 R2.” segundo link acima.
Uma solução possível para resolver essas situações é:
Usando ICACLS você pode executar algo assim:
Eu gosto da resposta dada em uma pergunta semelhante :
Obviamente, acho que o método de DBA preferido para fazer isso é simplesmente fazer backup e restaurar em um banco de dados diferente. Mas desanexar-copiar-reanexar é apenas uma operação de arquivo longa, em vez de 2 operações de arquivo longas (backup, restauração).