Página principal » cómo » Cómo respaldar bases de datos SQL a un recurso compartido de red

    Cómo respaldar bases de datos SQL a un recurso compartido de red

    La copia de seguridad de las bases de datos SQL con regularidad es imprescindible. Ya hemos cubierto formas de hacer fácilmente copias de seguridad de todas las bases de datos de su servidor SQL en un disco duro local, pero esto no protege contra la falla de la unidad y / o del sistema. Como una capa adicional de protección contra este tipo de desastre, puede copiar o crear directamente sus copias de seguridad en un recurso compartido de red.

    Realice una copia de seguridad local y luego copie al recurso compartido de red

    La forma preferida y más directa de realizar esta tarea es simplemente crear una copia de seguridad local de una base de datos y luego copiar el archivo de copia de seguridad respectivo en un recurso compartido de red. Puedes hacer esto creando un script por lotes que se vea así:

    SET LocalFolder = C: Archivos de programaMicrosoft SQL ServerMSSQL.1MSSQLBackup
    SqlCmd -E -Q "Copia de seguridad de la base de datos MyDB To Disk ="% LocalFolder% MyDB.bak "”
    XCopiar “% LocalFolder% MyDB.bak” “\ 192.168.16.55BackupDatabases” / Z / V
    DEL "% LocalFolder% MyDB.bak"

    Este script hace lo siguiente (línea por línea):

    1. Establece una variable en el directorio local de copia de seguridad de SQL.
    2. Crea una copia de seguridad SQL de MyDB (usando la autenticación de Windows) en el directorio local de copia de seguridad SQL.
    3. Copia el archivo de copia de seguridad local a un recurso compartido de red.
    4. Borra el archivo de copia de seguridad local.

    Nuevamente, este es el método preferido porque funciona de manera inmediata y la probabilidad de que se produzca una falla en la copia de seguridad es mínima, ya que la copia de seguridad se crea en un disco local. Sin embargo, si no tiene suficiente espacio en el disco para almacenar copias locales de los archivos de respaldo, esta acción fallará. En este caso, deberá agregar espacio adicional en el disco o una copia de seguridad directamente a un recurso compartido de red.

    Copia de seguridad directamente en un recurso compartido de red

    Normalmente, cuando intenta crear una copia de seguridad directamente en un recurso compartido de red con un comando como:

    SqlCmd -E -Q "Copia de seguridad de la base de datos MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak "”

    Lo más probable es que obtenga un error en la línea de:

    Msg 3201, nivel 16, estado 1, servidor JF, línea 1
    No se puede abrir el dispositivo de copia de seguridad '\ 192.168.16.55BackupDatabasesMyDB.bak'. Error del sistema operativo 5 (Acceso denegado)..
    Mensaje 3013, nivel 16, estado 1, servidor JF, línea 1
    BACKUP DATABASE está terminando de forma anormal.

    Este error se produce a pesar del hecho de que ejecutó el comando de copia de seguridad de SQL usando la autenticación de Windows (el interruptor -E) y la cuenta de Windows como la capacidad de acceder y copiar archivos al recurso compartido a través del Explorador de Windows.

    La razón por la que falla esta acción es porque el comando SQL se ejecuta dentro de los límites de la cuenta con la que se ejecuta el servicio SQL Server. Cuando vea la lista de Servicios en su computadora, lo más probable es que vea el servicio de SQL Server ejecutándose como (la columna Iniciar sesión como) Sistema local o Servicio de red, que son cuentas del sistema que no tienen acceso a la red.

    En nuestro sistema, el comando de copia de seguridad en un recurso compartido de red falla porque tenemos el servicio de SQL Server ejecutándose como sistema local que, de nuevo, no puede acceder a ningún recurso de la red.

    Para permitir que SQL realice una copia de seguridad directamente en un recurso compartido de red, debemos ejecutar el servicio SQL Server como una cuenta local que tiene acceso a los recursos de la red..

    Edite las propiedades del servicio SQL Server y, en la pestaña Iniciar sesión, configure el servicio para que se ejecute como una cuenta alternativa que tenga derechos de acceso a la red..

    Cuando haga clic en Aceptar, recibirá un aviso de que la configuración no tendrá efecto hasta que se reinicie el servicio..

    Reiniciar el servicio.

    La lista de servicios ahora debería mostrar que el servicio de SQL Server se está ejecutando como la cuenta que configuró.

    Ahora, cuando ejecute el comando para realizar una copia de seguridad directamente en un recurso compartido de red:

    SqlCmd -E -Q "Copia de seguridad de la base de datos MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak "”

    Debería ver un mensaje de éxito:

    Procesó 152 páginas para la base de datos 'MyDB', archivo 'MyDB' en el archivo 1.
    Procesó 2 páginas para la base de datos 'MyDB', archivo 'MyDB_log' en el archivo 1.
    La base de datos de respaldo procesó con éxito 154 páginas en 0.503 segundos (2.493 MB / s).

    Con el archivo de copia de seguridad ahora en el directorio de recursos compartidos de red:

    Consideraciones de compartición de red

    Es importante tener en cuenta que el comando de copia de seguridad espera poder conectarse directamente al recurso compartido de red sin que se le soliciten las credenciales. La cuenta que ha configurado para que se ejecute el servicio de SQL Server debe tener una conexión de confianza con el recurso compartido de red donde las credenciales respectivas permiten el acceso; de lo contrario, podría ocurrir un error como este:

    Msg 3201, nivel 16, estado 1, servidor JF, línea 1
    No se puede abrir el dispositivo de copia de seguridad '\ 192.168.16.55BackupDatabasesMyDB.bak'. Error del sistema operativo 1326 (Error de inicio de sesión: nombre de usuario desconocido o contraseña incorrecta)..
    Mensaje 3013, nivel 16, estado 1, servidor JF, línea 1
    BACKUP DATABASE está terminando de forma anormal.

    Este error indica que el nombre de usuario y la contraseña de la cuenta no fueron aceptados por el recurso compartido de red y el comando falló.

    Otro problema que se debe tener en cuenta es que la copia de seguridad se realiza directamente en un recurso de la red, por lo que cualquier problema en la conexión de la red podría hacer que su copia de seguridad falle. Por este motivo, solo debe realizar una copia de seguridad en ubicaciones de red que sean estables (es decir, probablemente no sea una VPN).

    Implicaciones de seguridad

    Como se mencionó anteriormente, es preferible utilizar el método en el que realiza una copia de seguridad local y luego la copia en un recurso compartido de red, ya que le permite ejecutar el Servicio SQL como una cuenta con acceso al sistema local únicamente..

    Al ejecutar el servicio como una cuenta alternativa, abre la puerta a posibles problemas de seguridad. Por ejemplo, una secuencia de comandos SQL maliciosa podría ejecutarse bajo la cuenta alternativa y atacar los recursos de red. Además, cualquier cambio en la cuenta respectiva (cambios / vencimientos de la contraseña o eliminación / desactivación de la cuenta) hará que el servicio de SQL Server no se inicie..

    Es importante tener en cuenta estos puntos si ejecuta su instancia de SQL Server con una cuenta alternativa. Si bien no se muestran los topes si se toman las precauciones adecuadas, debe considerar agregar espacio adicional en el disco duro y luego implementar la copia de seguridad local y la copia para poder ejecutar el servicio SQL utilizando una cuenta local..