No se puede abrir el dispositivo de respaldo. Error del sistema operativo 5

139

A continuación se muestra la consulta que estoy usando para hacer una copia de seguridad (crear a .bak) mi base de datos.

Sin embargo, cada vez que lo ejecuto, siempre recibo este mensaje de error:

Msg 3201, Nivel 16, Estado 1, Línea 1
No se puede abrir el dispositivo de respaldo 'C: \ Users \ Me \ Desktop \ Backup \ MyDB.Bak'. Error del sistema operativo 5 (acceso denegado).

Msg 3013, Nivel 16, Estado 1, Línea 1 La
BASE DE DATOS DE RESPALDO está finalizando de manera anormal.

Esta es mi consulta:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Smiley
fuente
Bueno, el mensaje de error es bastante claro, ¿no? ¿A qué usuario se está ejecutando el programa? ¿Existe el archivo bak? ¿Puedes acceder a él manualmente?
Pekka
1
¿Debemos suponer que esto es para SQL Server desde la ruta del archivo, ya que no puso el producto en las etiquetas o el título?
Powerlord
Pude ejecutar esta consulta antes de volver a formatear mi computadora portátil si ayuda. Este es SQL Server 2008 y lo estoy ejecutando como administrador. El archivo bak no existe ya que estoy en el proceso de crearlo con esta consulta.
Smiley
@Smiley Face: debe leer el archivo SQL a través de su red local, no de red. Por lo tanto, significa que primero tendrá que mover el archivo SQL de la red a su unidad local y restaurarlo.
mrjimoy_05
sqlbak.com/blog/…
Shiwangini

Respuestas:

235

Sí, acabo de marcar este.

Busque en los servicios de Windows. Inicio> Administración> Servicios

Busque el servicio en la lista llamada: SQL Server (MSSQLSERVER) busque la columna "Iniciar sesión como" (debe agregarla si no existe en la lista).

Esta es la cuenta que necesita para otorgar permisos al directorio, haga clic derecho en el explorador> propiedades> Recursos compartidos (y seguridad)

NOTA : Recuerde otorgar permisos al directorio real Y al recurso compartido si va a través de la red.

Solicite y espere a que se propaguen los permisos, intente la copia de seguridad nuevamente.

NOTA 2 : si está realizando una copia de seguridad a través de la red y su SQL se está ejecutando como "Servicio local", entonces está en problemas ... puede intentar asignar permisos o puede ser más fácil hacer una copia de seguridad localmente y hacer una copia a través de fuera de SQL Server ( Una hora más tarde).

NOTA 3 : Si está ejecutando como servicio de red, A VECES la máquina remota no reconocerá el servicio de red en su Servidor SQL. Si este es el caso, debe agregar permisos para la computadora en sí, por ejemplo. MyServer $.

Robin Vessey
fuente
20
Los permisos / add / advanced no encontraron al usuario en la lista, pero pegué en "NT Service \ MSSQLSERVER" y funcionó como un campeón.
Mark A
3
¿Agregar esto permiso para 'todos' a una carpeta?
DevDave
3
Depende, si es el público no autenticado, entonces sí. Si se trata de "cualquier persona autenticada", el SERVICIO LOCAL en una máquina remota generalmente no calificará ... pero ¿realmente desea dar acceso a todos?
Robin Vessey
1
No funcionó para mí, y solo estoy retrocediendo a C: \ temp \. La pantalla de permisos de carpeta simplemente no reconocería el inicio de sesión utilizado por el servicio, NT Service \ MSSQLSERVER , incluso cuando se pega como sugirió @Mark A. ¿Existe una buena cuenta alternativa para ese servicio?
MGOwen
8
Funcionó para mí, ¡gran solución! Estoy usando SQL Server Express 2014, por lo que deberá dar permiso de escritura a 'NT Service \ MSSQL $ SQLEXPRESS'.
mikhail-t
11

Vaya a la carpeta del servidor SQL en el menú de inicio y haga clic en herramientas de configuración Seleccione el administrador de configuración de SQL Server En los servicios del servidor SQL, en la instancia deseada cambie el (Iniciar sesión como) al sistema local

Abuleen
fuente
7

La cuenta de servicio de SQL Server no tiene permisos para escribir en la carpeta C:\Users\Kimpoy\Desktop\Backup\

Martin Smith
fuente
22
¿Cómo otorgo a la cuenta de servicio de SQL Server permisos para acceder a esta carpeta? :)
Smiley
6

También tuve este problema recientemente, sin embargo, estaba ejecutando el trabajo de copia de seguridad desde el servidor A pero la base de datos que se estaba respaldando estaba en el servidor B a un recurso compartido de archivos en el servidor C. Cuando el agente en el servidor A le dice al servidor B que ejecute una copia de seguridad t -sql, en realidad es la cuenta de servicio con la que se ejecuta sql en el SERVIDOR B que intenta escribir la copia de seguridad en el servidor C.

Solo recuerde, es la cuenta de servicio del servidor SQL que realiza el comando BACKUP DATABASE real lo que necesita privilegios en el sistema de archivos, no el agente.

Jason
fuente
4

Estaba pasando por esto yo mismo. Me aseguré de que mi usuario de inicio de sesión MSSQLSERVER tuvierafull access pero todavía estaba causando problemas. Solo funcionó una vez que moví el destino a la raíz de C. Lo más importante fuera de una carpeta de usuario (a pesar de que tenía un recurso compartido con permisos completos, incluso probé "Todos" como prueba).

No sé si considero mi problema "solucionado", sin embargo, está "funcionando".

Solo un FYI para cualquier otro usuario que se encuentre con este hilo.

DNK
fuente
1
Creo que esto es causado por dominios empresariales que tienen rutas de usuario que residen en unidades de red para que el usuario pueda acceder a ellas de manera transparente, independientemente de la máquina en la que inicien sesión. Tal como esta situación: superuser.com/a/730519
Bon
@Bon Gracias! Esto solucionó el problema para mí. La ruta en la que tenía el archivo de respaldo era en realidad una ruta de red.
JonM
4

Me enfrento al mismo problema con SQL Express 2014 SP1 en Windows 10.

Solución que funciona

  1. Servicio abierto escribiendo Servicios
  2. Localice y abra el servidor SQL (SQLExpress)
  3. Vaya a la pestaña Iniciar sesión
  4. Elija la cuenta del sistema local (también verifique si Permitir que los servicios interactúen con el escritorio)
  5. Haga clic en Aceptar . Detén el servicio. Reiniciar el servicio.
  6. Problema resuelto
Sawarkar vikas
fuente
3

Para saber a qué usuario debe dar permiso para realizar el proceso de restauración, puede seguir los siguientes pasos:

Debe ir a su servidor donde está instalado SQL Server. Encuentre el Administrador de configuración de SQL Server

ingrese la descripción de la imagen aquí

A continuación, debe ir a "Servicios de SQL Server"

ingrese la descripción de la imagen aquí

Bajo su instancia de SQL Server (MSSQLSERVER) habrá una cuenta con la columna "Iniciar sesión como", en mi caso es NT Service \ MSSQLSERVER .

Esa es la cuenta que debe agregar en la pestaña Seguridad de su ubicación .bak de origen y otorgar a ese usuario los permisos "Leer" para que se pueda leer el archivo de copia de seguridad.

Digamos que su archivo de copia de seguridad está presente en la carpeta "D: \ Shared", entonces debe otorgar permisos como este:

ingrese la descripción de la imagen aquí

Raghav
fuente
2

Tuve un problema similar Agregué permisos de escritura al archivo .bak mismo y a mi carpeta en la que estaba escribiendo la copia de seguridad para el usuario del SERVICIO DE RED. Para agregar permisos, simplemente haga clic con el botón derecho en el archivo / directorio que desea modificar, seleccione la pestaña de seguridad y agregue los usuarios / permisos apropiados allí.

Eric Bernier
fuente
1
¿Qué quieres decir con apropiado?
Steam
2

Esto es lo que hice para evitar el problema.

1) Ir a la copia de seguridad

2) Elimine la ruta del archivo de destino al disco

3) Haga clic en Agregar

4) En la casilla de verificación Nombre de archivo: escriba manualmente el nombre de la copia de seguridad después de .. \ copia de seguridad como a continuación, donde Yourdb.bak es el nombre de la copia de seguridad de la base de datos

C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ Yourdb.bak

5) Haga clic en Aceptar

¡Espero que esto ayude!

dpen82
fuente
2

Una de las razones por las que esto sucede es que está ejecutando su servicio MSSQLSERVER sin utilizar un sistema local. Para solucionar este problema, siga los siguientes pasos.

  1. Ejecución abierta con Windows + R
  2. Escriba services.msc y se abrirá un cuadro de diálogo de servicios.
  3. Encuentra SQL Server (MSSQLSERVER)
  4. Haga clic derecho y haga clic en propiedades.
  5. Vaya a la pestaña Iniciar sesión
  6. Seleccione la cuenta del sistema local y haga clic en "Aplicar" y "Aceptar"
  7. Haga clic en el enlace Detener en el panel izquierdo seleccionando "SQL Server (MSSQLSERVER)" e inícielo nuevamente una vez que se haya detenido por completo.
  8. Disfruta tu respaldo.

Espero que te ayude bien, como a mí. ¡Salud!

Gaurav Amatya
fuente
1

Sé que no es una solución exacta, pero el uso de rutas de disco externas resuelve este problema.

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Cem Mutlu
fuente
1

SQL Server no puede acceder (escribir) la copia de seguridad en la ubicación especificada.

Primero debe verificar la cuenta de servicio en la que se ejecuta el servidor SQL. Esto se puede hacer usando el administrador de configuración o Services.msc.

o

Utilice la consulta a continuación:

SELECT  DSS.servicename,
    DSS.startup_type_desc,
    DSS.status_desc,
    DSS.last_startup_time,
    DSS.service_account,
    DSS.is_clustered,
    DSS.cluster_nodename,
    DSS.filename,
    DSS.startup_type,
    DSS.status,
    DSS.process_id FROM    sys.dm_server_services AS DSS;

Ahora mire la columna service_account y anótela.

Vaya a la ubicación donde está intentando realizar la copia de seguridad. En su caso: C: \ Users \ Me \ Desktop \ Backup

Haga clic derecho -> Propiedades -> Seguridad ->

Agregue la cuenta de servicio y proporcione permisos de lectura / escritura. Esto resolverá el problema.

Ramakant Dadhichi
fuente
0

Msg 3201, Nivel 16, Estado 1, Línea 1 No se puede abrir el dispositivo de respaldo 'C: \ Backup \ Adventure_20120720_1024AM.trn'. Error del sistema operativo 5 (acceso denegado). Msg 3013, Nivel 16, Estado 1, Línea 1 BACKUP LOG está terminando anormalmente.

Verifiqué la carpeta de respaldo en la unidad C, ¿la cuenta de servicio nueva tiene permiso de acceso de control total o no ?, me di cuenta de que la cuenta de servicio "Test \ Kiran" no tiene permiso de seguridad de control total.

Siga los pasos a continuación para dar control total a la cuenta de servicio:

  1. Vaya a la unidad C, haga clic derecho en la carpeta Copia de seguridad.
  2. Seleccione la pestaña Seguridad.
  3. Haga clic en el botón Editar, se abrirá una nueva ventana.
  4. Haga clic en el botón Agregar e ingrese la cuenta de usuario Test \ Kiran y haga clic en el botón de verificación de nombre, esto validará si el usuario ingresado es existente o no, si es así, mostrará al usuario en la ventana, seleccione Aceptar.
  5. Seleccione el nombre de usuario ingresado y seleccione la casilla de verificación Control total en Permitir.
usuario2459051
fuente
0

Compruebe el acceso a las unidades. Primero cree una carpeta y vaya a las propiedades de la carpeta,

Puede encontrar la pestaña de seguridad, haga clic en esa verificación para ver si su identificación de usuario tiene acceso o no.

Si no puede encontrar su ID, haga clic en el botón Agregar y proporcione el nombre de usuario con acceso completo.

usuario2703575
fuente
0

Comparta esta carpeta y use la ruta UNC, por ejemplo: \ pc \ backups \ mydb.bak

Entonces puedes dejar de compartir.

No es muy elegante, pero resuelve todos los problemas de permisos (también debe otorgar permisos para compartir, como se mencionó anteriormente)

Gennady G
fuente
0

Experimenté este problema cuando el archivo .BAK se almacenó temporalmente en una carpeta cifrada con BitLocker. Retuvo el cifrado después de moverlo a una carpeta diferente.

La cuenta de SERVICIO DE RED no pudo descifrar el archivo y le dio este mensaje de error completamente informativo.

La eliminación del cifrado de BitLocker (desmarcando "Cifrar contenido para proteger los datos" en las propiedades del archivo) en el archivo .BAK resolvió el problema.

Eric J.
fuente
0

Yo tengo el mismo error. Los siguientes cambios me ayudaron a solucionar esto.

Tuve que verificar el Administrador del servidor-> Herramienta-> Servicios y encontrar el usuario (columna "Iniciar sesión como") para el servicio: SQL Server (SQLEXPRESS).

Fui a la carpeta local (C: \ Users \ Me \ Desktop \ Backup) y agregué "NT Service \ MSSQL $ SQLEXPRESS" como usuario para otorgar permisos de escritura.

Hiren Parghi
fuente
0

Hola, necesitas cambiar la consulta de:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'

a

BACKUP DATABASE AcinsoftDB
TO DISK = N'C:\Users\Me\Desktop\Backup\MyDB.Bak'

Tienes que agregar una N delante de la ruta que funciona para mí.

Robert Peter Bronstein
fuente
0

En mi caso, olvidé nombrar el archivo de respaldo y me seguía dando el mismo error de permiso: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
Señor brigante
fuente
0

Resolví el mismo problema con los siguientes 3 pasos:

  1. Guardo mi archivo de copia de seguridad en otra ruta de carpeta que funcionó correctamente.
  2. Ver diferente de la pestaña de seguridad dos carpetas (como la imagen de abajo).
  3. Permiso de edición en la carpeta de la pestaña de seguridad que no funcionó correctamente.

ingrese la descripción de la imagen aquí

Mohsen Najafzadeh
fuente