una todas seguridad script restaurar respaldos respaldar para las hacer generar extension dispositivos datos copia como bases sql-server backup

sql-server - todas - restaurar base de datos sql server 2008 a 2012



Copia de seguridad de servidor SQL a UNC (7)

Creé un plan de mantenimiento en mi servidor SQL Server 2005. La copia de seguridad debe escribirse en otro servidor. Estoy usando una ruta UNC para esto. El usuario que ejecuta los trabajos del Agente SQL tiene acceso completo al otro servidor. Es administrador en ambos servidores.

El problema es que esta declaración falla (tiene el nombre correcto del servidor por supuesto):

EJECUTAR master.dbo.xp_create_subdir N ''// servername / c $ / SqlServerBackup / Test''

El error que obtengo es: Msg 22048, nivel 16, estado 1, línea 0 xp_create_subdir () devolvió el error 123, ''El nombre del archivo, el nombre del directorio o la sintaxis de la etiqueta del volumen es incorrecto''.

¿Alguien sabe cuál podría ser el problema?


¿No es la falta de una doble barra invertida antes del nombre del servidor?


Verifique en la cuenta donde se ejecuta SqlAgent. Por lo general, el sistema / NetworkService y no tiene derechos de acceso en otras computadoras.

O bien, otorgue temporalmente derechos de escritura a todos en la ruta UNC o en Panel de control / Servicios cambie la cuenta utilizada para SqlAgent.


Hice una copia de seguridad de los tiempos de UNC. Asegúrese de que no se trate de un problema de permisos con la cuenta con la que se está ejecutando el servidor sql y el agente sql. No me gustaría hacer una copia de seguridad de la cuota de administración oculta de esa manera, quizás sea el $ el que está causando el problema. Crea un recurso compartido y copia de seguridad a eso. / server / share NOT / server / c $ / folder


Después de tener este problema yo mismo, sin que ninguna de las soluciones anteriores fuera lo suficientemente clara, pensé que publicaría una respuesta más clara. De hecho, el error no tiene nada que ver con la sintaxis, sino con permisos. Lo importante aquí es que es la cuenta del servicio SQL Server, NO la cuenta del Agente SQL Server, la que intenta iniciar sesión para crear el directorio. Puede verificar su Visor de eventos en el servidor de destino y mirar el registro de seguridad para ver los inicios de sesión fallidos de la cuenta de SQL Server en la otra máquina (la mía se estaba ejecutando como administrador local).

Para solucionar esto, configure su cuenta de servicio de SQL Server para que sea un usuario de dominio que puede escribir en el recurso compartido remoto. Hubiera esperado que el Agente SQL Server pudiera usar sus propias credenciales para realizar estas operaciones de copia de seguridad, ¡pero aparentemente no!


El Agente SQL realmente no ejecuta copias de seguridad, es capaz de ejecutar comandos en SQL Server que realiza la copia de seguridad. Por lo tanto, la cuenta de servicio de SQL Server es la que necesita permisos para compartir UNC.

Sin embargo, creo que hay un problema real con el procedimiento xp_create_subdir. Dejaré de usar planes de mantenimiento porque recibo exactamente el mismo error de vez en cuando. No hay permisos cambian y "normalmente" funciona, pero "normalmente" no funciona.


Si está ejecutando el Servidor de SQL Server y / o el Servicio de Agente de SQL Server como ''LocalSystem'', pero es resistente a cambiar las cuentas de SQL Server y SQL Server Agent a Cuentas de dominio, intente esto:

  1. Si está usando una cuenta / credenciales del Agente SQL Server para ejecutar parte de una tarea y copia de seguridad usando SQL Agent, en el destino de copia de seguridad de UNC bajo los permisos share y NTFS, otorgue permisos Full / Modify (respectivamente) a medida que se utilizan en un punto durante el proceso de establecer conexiones o al menos en los trabajos de copia de seguridad de SQL que he intentado (al menos de acuerdo con los Registros de seguridad). Lamentablemente, no existe una forma o no he encontrado una manera de realizar ciertas tareas del Servicio SQL Server mediante el uso de Cuentas Proxy que puede hacer con una tarea puramente Agente SQL (como se notó en publicaciones anteriores de User55852 y ZaDDaZ).

  2. En el servidor de destino de copia de seguridad de UNC bajo el recurso compartido y los permisos NTFS, conceda permisos Completo / Modificado (respectivamente) a la cuenta de equipo del servidor SQL (servidor de origen).

Esto funciona para aquellos casos en que los Servicios SQL se ejecutan como ''LocalSystem'', pero necesitan llegar a otro servidor para soltar una copia de seguridad.

Y, por supuesto, las mejores prácticas establecen que para cada servicio SQL, deben tener su propia cuenta de dominio con el menor privilegio, que en lugar de agregar la cuenta de equipo del servidor que expone mucho más acceso del que se debería permitir, esencialmente todo lo que se ejecuta como la cuenta de computadora o ''LocalSystem''.


Vi este error en el historial del plan de mantenimiento.

Error del sistema operativo 3 (El sistema no puede encontrar la ruta especificada). BACKUP DATABASE está terminando anormalmente. ". Posibles razones de falla: problemas con la consulta, la propiedad" ResultSet "no configurada correctamente, los parámetros no configurados correctamente o la conexión no establecida correctamente.

Traté de ejecutar la primera parte del paso de Copia de seguridad donde estaba creando el directorio en compartir. Obtuve el error de acceso denegado.

Finalmente, otorgué todos los permisos a la cuenta de servicio bajo la cual SQL Agent se ejecuta y el plan de mantenimiento se ejecutó con éxito.