El día de ayer estaba intentando restaurar una base de datos, en un servidor diferente al que se creó y en el que la gente que lo administraba se había puesto a jugar con las configuraciones, permisos y logins como no tienen idea. El caso es que una restauración que puede llevar unos 3 ó 5 minutos, nos llevó poco más de 2 horas.
El error: System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' *
El problema: El usuario que utilizaba el servicio de SQL para intentar la restauración.
La solución:
1. Abrir el SQL Server Configuration Manager que viene dentro de Configuration tools
2. Abrir el panel de Propiedades desde el menú contextual sobre la instancia del servicio de SQL (Normalmente SQLEXPRESS o MSSQLSERVER)
3. En la pestaña de Logon o Iniciar sesión elegir Cuenta integrada y seleccionar Local System.
La restauración debería poderse realizar ya sin problemas. En nuestro caso, el servicio de SQL como todo lo demás, tenía configurado un usuario específico, con permiso para nada. Bien por los DBAs.
* El error podrá parecer algo lógico, "Access is denied" no suena a otra cosa que permisos. Sin embargo, en nuestro caso, el error del sistema operativo marcaba algo así como "Could not retrieve text error for this message".