Error de restauración de SQL Server: acceso denegado

168

Creé una base de datos en mi máquina local y luego hice una copia tables.bakde seguridad llamada de tabla DataLabTables.

Moví esa copia de seguridad a una máquina remota sin esa tabla e intenté hacer una restauración, pero recibí el siguiente error:

System.Data.SqlClient.SqlError: el sistema operativo devolvió el error '5 (acceso denegado)' al intentar 'RestoreContainer :: ValidateTargetForCreation' en 'c: \ Archivos de programa \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables .mdf '.

¿Cómo reparo mis derechos, si ese es el problema?

cdub
fuente

Respuestas:

541

Acabo de tener este problema con SQL Server 2012.

Resulta que todo lo que tenía que hacer era marcar la casilla marcada 'Reubicar todos los archivos a la carpeta' en la sección 'Archivos':

ingrese la descripción de la imagen aquí

(Haga clic para ver la imagen a tamaño completo)

Por supuesto, esto supone que tiene instalada la versión correcta de SQL Server.

Exilio
fuente
13
Me funcionó a mi también. ¿Alguien puede explicar por qué ?
Magnético el
3
¿También puede compartir cómo se puede hacer esto a través del script en lugar de la interfaz de usuario?
FMFF
9
Tuve este problema con 2014, la misma solución.
DaneEdw
3
Esta también fue la solución para mí al hacer una copia de seguridad de SQL Express y restaurar en un servidor SQL completo
tarrball
11
Necesito darte un abrazo. Ahora en serio, estaba a punto de decirle no a un cliente, su respuesta salvó mi proyecto.
Marco Scabbiolo
30

Desde el mensaje de error, dice que hay un error al validar el objetivo ( c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf) de su operación de restauración.

Eso suena como:

a) ese archivo ya existe (porque ya lo ha restaurado anteriormente) y SQL Server lo está utilizando

o

b) ese directorio no existe en absoluto

En su pregunta, mencionó que creó una copia de seguridad para esa tabla; no es así como funcionan las copias de seguridad de SQL Server. Esas copias de seguridad son siempre la base de datos completa (o al menos uno o varios grupos de archivos de esa base de datos).

Mi presentimiento es: ya ha restaurado esa base de datos anteriormente, y ahora, después de una segunda restauración, no marcó la casilla de verificación "Sobrescribir la base de datos existente" en su asistente de restauración, por lo tanto, el archivo existente no se puede sobrescribir y la restauración falla.

El usuario que ejecuta la restauración en su servidor remoto obviamente no tiene acceso a ese directorio en el servidor remoto.

C:\program files\.... es un directorio protegido: los usuarios normales (no administradores) no tienen acceso a este directorio (ni a sus subdirectorios).

La solución más fácil: intente colocar su archivo BAK en otro lugar (p C:\temp. Ej. ) Y restaurarlo desde allí

marc_s
fuente
Intenté con C: \ temp pero el error sigue siendo el mismo que el anterior, con la misma ruta que mencioné por primera vez, lo cual es extraño
cdub
Hago clic derecho en Bases de datos en SQL Management Studio, luego Tareas -> restaurar
cdub
1
@marc_s thx, olvidé editar las opciones ya que no hay un directorio para ese archivo ... no es ... MSSQL \ DataLabTables.mdf sino que ... MSSQL \ Data \ DataLabTables.mdf
cdub
2
@marc_s: Comentario menor sobre la parte "y está en uso por SQL Server" de la opción A mencionada anteriormente: Resulta que un RESTOREcomando estándar falla si el archivo existe, incluso si SQL Server no lo está usando (por ejemplo, el MDF / Los archivos LDF permanecen en su lugar después de una separación previa). Encontré esto en una implementación personalizada de envío de registros basada en T-SQL para una migración importante de cientos de bases de datos en las últimas semanas. No estoy seguro de que el mensaje de error fue "acceso denegado", podría haber sido algo menos específico.
Tao
2
Tuve que cambiar manualmente el nombre de los archivos MDF / LDF existentes antes de poder restaurar a través de una copia de seguridad; comprobar 'Sobrescribir' no era suficiente.
Jamie Keeling
26

Estaba teniendo el mismo problema. Resultó que mi SQL Servery los SQL Server Agentservicios se logon asestaban ejecutando bajo la Network Servicescuenta que no tenía acceso de escritura para realizar la restauración de la copia de seguridad.

Cambié ambos servicios para iniciar sesión como Local System Accounty esto solucionó el problema.

Pulga
fuente
Esta no es una buena idea. Enmascara el problema real, que es la ubicación del archivo que está intentando restaurar, no es lo que pretende.
declouet
2
Mi servicio de SQL Server se estaba ejecutando en "NT Service \ MSSQLSERVER" agregando permisos para este usuario a la carpeta de datos y registros que funcionó para mí.
Tim Newton
Bien, esto me ayudó
Aliaksei Zhukau
9

Recientemente me enfrenté a este problema con SQL 2008 R2 y la siguiente solución funcionó para mí:

1) Cree una nueva base de datos con el mismo nombre que está tratando de restaurar 2) Mientras restaura, use el mismo nombre que usó anteriormente y en las opciones, haga clic en la opción de sobrescritura

Puede darle una oportunidad a lo anterior si las otras soluciones no funcionan.

Devin
fuente
6

El creador de la copia de seguridad tenía instalada la versión 10 de MSSql, por lo que cuando realizó la copia de seguridad también almacena la ruta del archivo original (para poder restaurarla en la misma ubicación), pero tenía la versión 11, por lo que no pudo encontrar el directorio de destino.

Así que cambié el directorio del archivo de salida a C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \, y pude restaurar la base de datos con éxito.

Fuente

Philluminati
fuente
6

Tuve un problema similar. Traté de restaurar un archivo 2005 .bak y recibí exactamente el mismo error. Seleccioné la opción de sobrescribir también en vano.

mi solución fue otorgarle al usuario SQL acceso al directorio en cuestión, yendo a la carpeta y editando los derechos de acceso a través de la pantalla de propiedades.

martijn
fuente
2

Perdí un par de horas a este problema también. sin embargo lo puso en marcha:

"acceso denegado" en mi caso realmente significaba "acceso denegado". La cuenta de usuario de mssqlstudio en mi dispositivo Windows NO tenía control total de la carpeta especificada en el mensaje de error. Le di el control total. ya no se denegó el acceso y la restauración se realizó correctamente.

¿Por qué se bloqueó la carpeta para el estudio? quién sabe ? Tengo suficientes preguntas para tratar como es sin tratar de responder más.

abraham tio
fuente
1

Tuve este problema, inicié sesión como administrador y solucionó el problema.

Rob Smith
fuente
También funcionó para mí para el SSMS v17
Nandolcs el
0

Otro escenario podría ser la existencia de múltiples rutas de bases de datos. Primero, tome nota de la ruta donde actualmente se almacenan las nuevas bases de datos. Por lo tanto, si crea una nueva base de datos vacía y luego lo hace Tasks/Restore, asegúrese de que la ruta que la restauración está tratando de usar sea el mismo directorio en el que se creó la base de datos vacía. Incluso si la ruta de restauración es legal, aún se le negará el acceso error si no es la ruta actual con la que está trabajando. Muy fácil de detectar cuando la ruta no es legal, mucho más difícil de detectar cuando la ruta es legal, pero no la ruta actual.

demongolem
fuente
0

Lo siento porque no puedo comentar ...

Yo tuve el mismo problema. En mi caso, el problema estaba relacionado con el intento de restaurar en una antigua carpeta de servidor sql (que existía en el servidor). Esto se debe a la antigua copia de seguridad del servidor SQL (es decir, la copia de seguridad de SQL Server 2012) restaurada en un nuevo servidor SQL (SQL Server 2014). El verdadero problema no es muy diferente de la respuesta de @marc_s. De todos modos, cambié solo la carpeta de destino a la nueva carpeta DATA de SQL Server.

bubi
fuente
0

Puede que esta no sea la mejor solución, pero estaba intentando hacer la restauración en SQL Server 2005, pero cambié a SQL Server 2008 y funcionó.

alansiqueira27
fuente
0

Tengo un problema como este. Error causado por la compresión habilitada en las carpetas de SQL Server.

Arman Hayots
fuente
0

Amigos ... Tuve el mismo problema al restablecer la base de datos y probé todas las soluciones, pero no pude resolverlo. Luego intenté volver a instalar SQL 2005 y el problema se resolvió. En realidad, la última vez que olvidé comprobar la opción de personalizar al instalar SQL ... Viene dos veces durante la instalación y lo compruebo solo para los únicos ...

Nishant
fuente
0

En mi caso, tuve que verificar la ruta de respaldo de la base de datos desde donde estaba restaurando. Anteriormente lo había restaurado desde un camino diferente cuando lo hice por primera vez. ¡Arreglé la ruta de respaldo para usar la ruta de respaldo que usé la primera vez y funcionó!

SitecoreSyed
fuente
0

Terminé haciendo nuevas carpetas para datos y registros y funcionó correctamente, debe haber sido un problema de permiso de carpeta / archivo.

reggaeguitar
fuente
0

Esto también sucede si las rutas son correctas, pero la cuenta de servicio no es propietaria de los archivos de datos (sin embargo, todavía tiene suficientes derechos para el acceso de lectura / escritura). Esto puede ocurrir si los permisos para los archivos se restablecieron para que coincidan con los permisos de la carpeta (por supuesto, mientras se detuvo el servicio).

La solución más fácil en este caso es separar cada base de datos y volver a adjuntarla (porque al adjuntar el propietario se cambia para que sea la cuenta de servicio).

Razvan Socol
fuente
-1

Prueba esto:

En la ventana del asistente Restaurar DB, vaya a la pestaña Archivos, desactive la casilla de verificación "Reubicar todos los archivos a la carpeta" y luego cambie el destino de restauración de C: a otra unidad. Luego proceda con el proceso de restauración regular. Se restaurará con éxito.

Raja Sekhar
fuente
-1

Tuve el mismo problema pero utilicé sql server 2008 r2, debe registrar las opciones y verificar las rutas donde sql guardará los archivos .mdf y .ldf, debe seleccionar la ruta de la instalación de su servidor sql. Resolví mi problema con esto, espero que te ayude.

Edgar Castillo
fuente
-2

Luego intente moverlo a una subcarpeta debajo de C :, pero verifique que el usuario tenga todos los derechos sobre la carpeta que usa.

sqlKob
fuente