Homepage » come » Come eseguire il backup dei database SQL in una condivisione di rete

    Come eseguire il backup dei database SQL in una condivisione di rete

    Il backup regolare dei database SQL è obbligatorio. Abbiamo già spiegato come è possibile eseguire facilmente il backup di tutti i database del server SQL su un disco rigido locale, ma questo non protegge da guasti di unità e / o di sistema. Come ulteriore livello di protezione da questo tipo di disastro, è possibile copiare o creare direttamente i backup su una condivisione di rete.

    Effettua il backup locale e poi copia nella condivisione di rete

    Il modo preferito e più diretto per eseguire questa attività è semplicemente creare un backup locale di un database e quindi copiare il rispettivo file di backup in una condivisione di rete. Puoi farlo creando uno script batch che assomiglia a questo:

    SET LocalFolder = C: Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup
    SqlCmd -E -Q "Database backup MyDB To Disk ="% LocalFolder% MyDB.bak ""
    XCopy "% LocalFolder% MyDB.bak" "\ 192.168.16.55BackupDatabases" / Z / V
    DEL "% LocalFolder% MyDB.bak"

    Questo script fa quanto segue (riga per riga):

    1. Imposta una variabile nella directory di backup SQL locale.
    2. Crea un backup SQL di MyDB (utilizzando l'autenticazione di Windows) nella directory di backup SQL locale.
    3. Copia il file di backup locale in una condivisione di rete.
    4. Elimina il file di backup locale.

    Ancora una volta, questo è il metodo preferito perché funziona immediatamente e la probabilità di un errore di backup è minima poiché il backup viene creato su un disco locale. Tuttavia, se non si dispone di spazio su disco sufficiente per archiviare copie locali dei file di backup, questa azione avrà esito negativo. In questo caso, sarà necessario aggiungere ulteriore spazio su disco o backup direttamente a una condivisione di rete.

    Backup diretto su una condivisione di rete

    In genere, quando si tenta di creare un backup direttamente su una condivisione di rete utilizzando un comando come:

    SqlCmd -E -Q "Database backup MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""

    Molto probabilmente otterrai un errore sulla falsariga di:

    Messaggio 3201, livello 16, stato 1, server JF, linea 1
    Impossibile aprire il dispositivo di backup '\ 192.168.16.55BackupDatabasesMyDB.bak'. Errore del sistema operativo 5 (Accesso negato)..
    Messaggio 3013, livello 16, stato 1, server JF, linea 1
    Il BACKUP DATABASE sta terminando in modo anomalo.

    Questo errore si verifica nonostante il comando di backup SQL sia stato eseguito utilizzando l'autenticazione di Windows (lo switch -E) e l'account Windows come possibilità di accedere e copiare i file nella condivisione tramite Windows Explorer.

    Il motivo per cui questa azione ha esito negativo è perché il comando SQL viene eseguito entro i limiti dell'account in cui è in esecuzione il servizio SQL Server. Quando visualizzi l'elenco Servizi sul tuo computer, molto probabilmente vedrai il servizio SQL Server in esecuzione come (la colonna Accedi come) Sistema locale o Servizio di rete che sono account di sistema che non hanno accesso alla rete.

    Sul nostro sistema il comando di backup su una condivisione di rete fallisce perché il servizio SQL Server è in esecuzione come sistema locale che, ancora, non può accedere a nessuna risorsa di rete.

    Per consentire a SQL di eseguire il backup direttamente su una condivisione di rete, è necessario eseguire il servizio SQL Server come account locale che ha accesso alle risorse di rete.

    Modificare le proprietà del servizio SQL Server e nella scheda Connessione, configurare il servizio in modo che venga eseguito come un account alternativo con diritti di accesso alla rete.

    Quando si fa clic su OK, si riceverà una richiesta che le impostazioni non abbiano effetto fino al riavvio del servizio.

    Riavvia il servizio.

    L'elenco dei servizi ora dovrebbe mostrare che il servizio SQL Server è in esecuzione come account configurato.

    Ora quando esegui il comando per eseguire il backup direttamente su una condivisione di rete:

    SqlCmd -E -Q "Database backup MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""

    Dovresti vedere un messaggio di successo:

    Elaborato 152 pagine per database 'MyDB', file 'MyDB' sul file 1.
    Elaborazione di 2 pagine per il database "MyDB", file "MyDB_log" sul file 1.
    BACKUP DATABASE ha elaborato con successo 154 pagine in 0.503 secondi (2.493 MB / sec).

    Con il file di backup ora nella directory di condivisione di rete:

    Considerazioni sulla condivisione di rete

    È importante notare che il comando di backup si aspetta di essere in grado di connettersi direttamente alla condivisione di rete senza richiedere le credenziali. L'account che hai configurato per l'esecuzione del servizio SQL Server deve disporre di una connessione affidabile con la condivisione di rete in cui le rispettive credenziali consentono l'accesso, altrimenti potrebbe verificarsi un errore simile a questo:

    Messaggio 3201, livello 16, stato 1, server JF, linea 1
    Impossibile aprire il dispositivo di backup '\ 192.168.16.55BackupDatabasesMyDB.bak'. Errore del sistema operativo 1326 (Errore di accesso: nome utente sconosciuto o password errata.).
    Messaggio 3013, livello 16, stato 1, server JF, linea 1
    Il BACKUP DATABASE sta terminando in modo anomalo.

    Questo errore indica che il nome utente e la password dell'account non sono stati accettati dalla condivisione di rete e il comando non è riuscito.

    Un altro problema da tenere presente è che il backup viene eseguito direttamente su una risorsa di rete, quindi eventuali problemi nella connessione di rete potrebbero causare il fallimento del backup. Per questo motivo, dovresti eseguire il backup solo su posizioni di rete che sono stabili (ovvero probabilmente non una VPN).

    Implicazioni di sicurezza

    Come accennato in precedenza, è preferibile utilizzare il metodo di backup locale e quindi copiare in una condivisione di rete in quanto consente di eseguire il servizio SQL come account con accesso solo al sistema locale.

    Eseguendo il servizio come un account alternativo, apri la porta a potenziali problemi di sicurezza. Ad esempio, uno script SQL dannoso potrebbe eseguire sotto l'account alternativo e attaccare le risorse di rete. Inoltre, eventuali modifiche al rispettivo account (modifiche / scadenze della password o cancellazione / disabilitazione dell'account) causeranno l'avvio non riuscito del servizio SQL Server.

    È importante tenere a mente questi punti se si esegue l'istanza di SQL Server utilizzando un account alternativo. Sebbene questi non siano fermi di scena se vengono prese le opportune precauzioni, si dovrebbe prendere in considerazione l'aggiunta di ulteriore spazio sul disco rigido e quindi implementare il backup e la copia locale in modo da poter eseguire il servizio SQL utilizzando un account locale.