Estou trabalhando com SQL-Server, usando o SQL-Server Management Studio (SSMS).
Para executar a restauração de um backup, criei um login do SQL Server via SSMS, chamado PORT-DDM\SQLEXPRESS
, que é a maneira típica de se conectar a um banco de dados SQL Server.
Também criei um segundo, chamado PORT-DDM\SQLEXPRESS01
(onde PORT-DDM
está o nome do meu PC), e agora gostaria de restaurar um backup da PORT-DDM\SQLEXPRESS
instância para a PORT-DDM\SQLEXPRESS01
instância . Peguei o PORT-DDM\SQLEXPRESS
backup e o armazenei no meu diretório local C:\Temp_Folder\<filename>.bak
, mas ao executar a ação de restauração, recebo a seguinte mensagem de erro:
===================================
Restore of database '<Prod>_<Customer>' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
Program Location:
at Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.PerformTask(ITaskExecutionContext context)
at Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.Perform(ITaskExecutionContext context)
at Microsoft.SqlServer.Management.TaskForms.TaskExecutionManager.ExecuteTaskSequence(ISfcScriptCollector collector)
===================================
System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\<Prod>_<Customer>.mdf'. (Microsoft.SqlServer.SmoExtended)
------------------------------
For help, click: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.100.47021.0&LinkId=20476
------------------------------
Program Location:
at Microsoft.SqlServer.Management.Smo.RestorePlan.Execute()
at Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreDatabaseTaskFormComponent.PerformTask(ITaskExecutionContext context)
(O link mencionado parece estar inativo.)
Como posso prosseguir?
Ah, esqueci de mencionar: o local onde meu backup está localizado é acessível para todos os usuários do meu PC:
Eu dei controle total a todos, usando icalcs
. Agora estou preso porque o seguinte arquivo está sendo usado pelo SQL-Server: C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\<Prod>_<Cust>.mdf
.
Para evitar isso, reiniciei minha sessão do SQL Server e até mesmo meu PC inteiro, mas o problema persiste.
Conforme solicitado, a imagem da tela "restaurar banco de dados":
Isto está se tornando um pesadelo sangrento :
- Primeiro, recebo mensagens de erro informando que ele precisa de acesso de administrador para os arquivos.
- Então ele reclama que os arquivos estão em uso, então tenho que reiniciar meu computador.
- Depois ele reclama que há outros arquivos para os quais ele precisa de direitos de administrador.
- Depois que isso é resolvido, ele reclama novamente que os arquivos estão em uso, então preciso reiniciar meu computador novamente .
- Por fim, ele diz: "Mas você não pode fazer isso: você está restaurando um banco de dados em seu local original".
=> Essa última coisa é a razão exata pela qual criei o login "SQLExpress 01 ": para poder ter diferentes instâncias dos mesmos bancos de dados: uma para testes de tempo de execução e uma para restaurar os backups, recuperados dos sites do cliente. Geralmente essa última coisa está funcionando bem, mas agora estou lidando com um cliente cujo servidor de banco de dados está inacessível, então estou usando "Gerar script" para obter o ±backup. A ideia era fazer outro backup do meu computador (sob o login "SQLEXPRESS"), restaurar sob o login "SQLEXPRESS01" e usá-lo para o cenário "Gerar script" mencionado.