2008-10-19 15 views
13

He creado 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.Copia de seguridad de servidor SQL a UNC

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

EJECUTAR master.dbo.xp_create_subdir N '\\ servidor \ c $ \ SqlServerBackup \ Test'

El error que recibo 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?

+0

sospecho que es un permisos Problema: ¿SQL Agent en este servidor puede escribir copias de seguridad en el mismo servidor de destino en un doblez? ¿Eso ya existe? – Dane

Respuesta

0

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

+1

No, este sitio web no mostró la doble backslah correctamente. Lo he corregido ahora ... –

1

Compruebe en qué cuenta 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 el Panel de control/Servicios cambie la cuenta utilizada para SqlAgent.

0

He hecho copias de seguridad hasta Mmany veces de UNC. Asegúrese de que no sea un problema de permisos con la cuenta con la que se está ejecutando el servidor sql y el agente sql. No retrocedería a la cuota de administración oculta de esa manera, tal vez sea el $ lo que está causando el problema. Crea un recurso compartido y copia de seguridad a eso. \ server \ share NOT \ server \ c $ \ folder

22

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 resolver 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!

+0

Usted acaba de hacer mi día :-) Gracias – MadBoy

+0

+10 Billion! Nunca hubiera imaginado esto. – Josh

3

SQL Agent no ejecuta realmente 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.

2

Si está ejecutando el servicio Agente SQL Server SQL Server y/o como 'LocalSystem', pero son resistentes al cambio del SQL Server y el Agente SQL Server cuentas para cuentas de dominio, intente esto:

  1. Si está utilizando una cuenta/credenciales del Agente SQL Server Proxy para ejecutar parte de una tarea y copia de seguridad utilizando SQL Agent, en el destino de copia de seguridad de UNC bajo los permisos share y NTFS, otorgar permisos completos/modificar (respectivamente) a medida que se utilizan en uno señalar 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 UNC destino de la copia bajo los permisos de recurso compartido y NTFS, conceder permisos Full/Modificar (respectivamente) a la cuenta deordenador del servidor SQL (servidor de origen).


Esto funciona para aquellos casos en los que los servicios de SQL se ejecutan como 'LocalSystem', pero tienen que meter la mano en otro servidor para dejar caer 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 permitido - esencialmente cualquier cosa que se ejecute como la cuenta de computadora o 'LocalSystem'.

+0

Si debe usar una cuenta integrada en lugar de crear su propia cuenta de usuario, use el SERVICIO LOCAL o el SERVICIO DE RED en lugar de LocalSystem. LocalSystem tiene demasiados privilegios y puede hacer cualquier cosa en un sistema Windows. Para realizar una copia de seguridad en un recurso compartido remoto, deberá usar el SERVICIO DE RED, porque LOCAL SERVICE no tiene ningún derecho de red y se autenticará como anónimo. –

2

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 termina de forma anormal. "Razones de fallo posibles:. Problemas con la consulta, 'ResultSet' propiedad no se establece correctamente, los parámetros no se establecen correctamente, o la conexión no se ha establecido correctamente

Traté de correr primera pieza de. . error de paso de copia de seguridad en el que estaba creando directorio en acción. me acceso denegado

por último, me dio los permisos para el servicio cuenta con la que el Agente SQL se ejecuta y plan de mantenimiento se ejecuta con éxito.

Cuestiones relacionadas