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

Sommario:

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

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

Video: Come eseguire il backup dei database SQL in una condivisione di rete
Video: NON FARE Postepay Evolution - YouTube 2024, Maggio
Anonim

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 “Backup Database 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 fuori dalla scatola 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 “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”

Molto probabilmente otterrai un errore sulla falsariga di:

Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.

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

Il motivo per cui questa azione non riesce è perché il comando SQL viene eseguito entro i limiti dell'account in cui è in esecuzione il servizio SQL Server. Quando si visualizza l'elenco Servizi sul computer, molto probabilmente vedrete 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.
Il motivo per cui questa azione non riesce è perché il comando SQL viene eseguito entro i limiti dell'account in cui è in esecuzione il servizio SQL Server. Quando si visualizza l'elenco Servizi sul computer, molto probabilmente vedrete 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 ha esito negativo perché il servizio SQL Server è in esecuzione come sistema locale che, di nuovo, 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.
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.
Quando si fa clic su OK, si riceverà una richiesta che le impostazioni non abbiano effetto fino al riavvio del servizio.
Riavvia il servizio.
Riavvia il servizio.
L'elenco dei servizi ora dovrebbe mostrare che il servizio SQL Server è in esecuzione come l'account configurato.
L'elenco dei servizi ora dovrebbe mostrare che il servizio SQL Server è in esecuzione come l'account configurato.
Ora quando esegui il comando per eseguire il backup direttamente su una condivisione di rete:
Ora quando esegui il comando per eseguire il backup direttamente su una condivisione di rete:

SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”

Dovresti vedere un messaggio di successo:

Processed 152 pages for database ‘MyDB’, file ‘MyDB’ on file 1. Processed 2 pages for database ‘MyDB’, file ‘MyDB_log’ on file 1. BACKUP DATABASE successfully processed 154 pages in 0.503 seconds (2.493 MB/sec).

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

Image
Image

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:

Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 1326(Logon failure: unknown user name or bad password.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.

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 a mente è 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, è necessario eseguire il backup solo su posizioni di rete che sono stabili (ovvero non è probabilmente una VPN).

Implicazioni di sicurezza

Come accennato in precedenza, è preferibile utilizzare il metodo in cui si esegue il backup locale e quindi si copia in una condivisione di rete in quanto consente di eseguire il servizio SQL come account solo con accesso 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 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 esposizione se vengono prese le opportune precauzioni, è consigliabile considerare l'aggiunta di ulteriore spazio sul disco rigido e quindi implementare il backup e la copia locali in modo da poter eseguire il servizio SQL utilizzando un account locale.

Consigliato: