Tengo un Servidor SQL (2000, 2005 y 2008) y me gustaría usar el Agente SQL (o incluso una simple base de datos de respaldo 'xxx' a disco = 'aaa'), para hacer un respaldo a unidades remotas.
Es decir: tengo una unidad asignada en la máquina SQL, por ejemplo: "M:" que se asigna a \\ otherbox \ someshare
De manera predeterminada, SQL Server no le permitirá realizar copias de seguridad en dichas unidades, pero creo que hay una manera de habilitarlo. ¿Alguien puede señalarme los documentos?
Gracias por adelantado.
sql-server
backup
mappeddrive
Martin Marconcini
fuente
fuente
Respuestas:
Utilice la ruta UNC cuando especifique el destino: el Agente SQL no tiene un concepto de "unidades" "asignadas".
Además, el Agente SQL normalmente se ejecuta como "Servicio local" o "Sistema local" y, como tal, no tiene derechos para recursos compartidos remotos en otras computadoras.
Usted tiene un par de opciones:
Ejecute el Agente SQL como una cuenta de rol en el dominio. Otorgue a esa cuenta permiso para escribir en el directorio / recurso compartido donde desea almacenar las copias de seguridad.
Ejecute el Agente SQL como "Servicio de red". Se autenticará en el servidor compartido con la cuenta de computadora de dominio de la máquina en la que se ejecuta el servicio. Otorgue a esa cuenta permiso para escribir en el directorio / recurso compartido donde desea almacenar la copia de seguridad.
Si no tiene un dominio, cree una cuenta con el mismo nombre de usuario y contraseña tanto en la máquina que aloja el Agente SQL como en la máquina que aloja los archivos de copia de seguridad. Cambie el Agente SQL para que se ejecute como esta cuenta de "rol" y otorgue a esa cuenta permiso para escribir en el directorio / recurso compartido donde desea almacenar la copia de seguridad. (El "dominio del pobre" ...)
fuente
Estoy totalmente de acuerdo con ambas respuestas sobre la ruta UNC.
También me gustaría agregar que incluso con unidades mapeadas tienes una solución simple. Puede ejecutar una copia de seguridad en cualquiera de las unidades normales de su servidor. Y luego puedes agregar
Comando SQL para el trabajo o script SQL que ejecuta.
Con xp_cmdshell puede hacer aún más: por ejemplo, ejecutar una herramienta de línea de comando de archivo externo, como 7z para comprimir el archivo antes de copiarlo en la unidad asignada (cuando la conexión remota es demasiado lenta ...)
PD: Olvidé mencionar que xp_cmdshell puede habilitarse y deshabilitarse usando la herramienta de Configuración de área de superficie y ejecutando sp_configure (y por defecto está deshabilitado)
fuente
Su agente necesita acceso a los recursos compartidos de la red. No necesitan ser mapeados de antemano.
Lo haces así:
Creo que si el usuario que posee el trabajo es un administrador de sistemas sql, se ejecuta bajo el agente; de lo contrario, se ejecuta como el usuario que no es administrador de sistemas.
fuente
Si SQL Server no se ejecuta bajo una cuenta de dominio, puede asignar una unidad de red para la cuenta de sqlserver (no su cuenta) como se describe en esta respuesta de stackoverflow
Primero necesitas habilitar xp_cmdshell
Luego puedes mapear un disco usando:
Finalmente, puede hacer una copia de seguridad en esa unidad asignada:
fuente
Tenga en cuenta aquí que SQL Server es muy intolerante con los retrasos de la red. Si ocurren, y tienden a hacerlo, la copia de seguridad fallará. No recomiendo esta práctica en absoluto para entornos de producción.
Es mejor hacer una copia de seguridad local y luego copiar.
fuente
La forma más fácil es crear una unidad .vhd en un recurso compartido de red a través de la administración del disco y asignarle una letra de unidad. SQL puede acceder a esta unidad sin ninguna modificación.
Simplemente agregue un script diskpart.exe al planificador en el arranque para adjuntarlo automáticamente al reiniciar.
ejemplo, seleccione vdisk file = "\ {dirección IP / servidor} {networkshare} {filenamep.vhd}" adjunte vdisk // recuerda la última letra de unidad asignada.
fuente