Domovská » jak » Jak zálohovat databáze SQL do síťového sdílení

    Jak zálohovat databáze SQL do síťového sdílení

    Zálohování databází SQL pravidelně je nutné. Již jsme se zabývali způsoby, jak snadno zálohovat všechny vaše SQL serverové databáze na lokální pevný disk, ale to neochrání proti selhání jednotky a / nebo systému. Jako dodatečnou vrstvu ochrany proti tomuto typu katastrofy můžete kopírovat nebo přímo vytvářet zálohy na síťové sdílené položce.

    Místní zálohování a poté Kopírovat do Sdílení sítě

    Preferovaným a nejpřímějším způsobem, jak tento úkol splnit, je jednoduše vytvořit lokální zálohu databáze a poté zkopírovat příslušný záložní soubor do síťové sdílené složky. Můžete to udělat vytvořením dávkového skriptu, který vypadá takto:

    SET LocalFolder = C: Programové souboryMicrosoft SQL ServerMSSQL.1MSSQLBackup
    SqlCmd -E -Q "zálohovací databáze MyDB na disk ="% LocalFolder% MyDB.bak ""
    XCopy "% LocalFolder% MyDB.bak" "\ 192.168.16.55BackupDatabases" / Z / V
    DEL "% LocalFolder% MyDB.bak"

    Tento skript provede následující (řádek po řádku):

    1. Nastaví proměnnou do místního adresáře zálohování SQL.
    2. Vytvoří zálohu SQL MyDB (pomocí ověřování systému Windows) do místního adresáře zálohování SQL.
    3. Zkopíruje místní soubor zálohy do síťové sdílené složky.
    4. Odstraní místní soubor zálohy.

    Znovu je to upřednostňovaná metoda, protože funguje mimo krabici a pravděpodobnost výpadku zálohy je minimální od vytvoření zálohy na místním disku. Pokud však nemáte dostatek místa na uložení místních kopií souborů zálohování, tato akce selže. V takovém případě budete muset přidat další místo na disku nebo zálohu přímo do síťové sdílené složky.

    Zálohování přímo do síťového sdílení

    Obvykle při pokusu o vytvoření zálohy přímo do síťové sdílené položky pomocí příkazu, například:

    SqlCmd -E -Q "zálohovací databáze MyDB na disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""

    Budete pravděpodobně pravděpodobně dostat chybu podle následujících řádků:

    Msg 3201, úroveň 16, stav 1, server JF, řádek 1
    Nelze otevřít zálohovací zařízení '\ 192.168.16.55BackupDatabasesMyDB.bak'. Chyba operačního systému 5 (přístup byl odepřen.).
    Msg 3013, úroveň 16, stav 1, server JF, řádek 1
    ZÁLOHOVÁNÍ DATABÁZE se abnormálně ukončí.

    K této chybě dochází i přes skutečnost, že jste spustili příkaz pro zálohování SQL pomocí ověřování systému Windows (přepínač -E) a účtu systému Windows jako možnost přístupu a kopírování souborů do sdílené položky pomocí Průzkumníka Windows.

    Důvodem, proč tato akce selže, je, že příkaz SQL je spuštěn v mezích účtů, které je spuštěna služba SQL Server jako. Při zobrazení seznamu služeb v počítači s největší pravděpodobností uvidíte službu SQL Server spuštěnou jako (sloupec Přihlášení jako) buď místní systém nebo síťová služba, což jsou systémové účty, které nemají přístup k síti.

    V našem systému selže zálohování příkazu sdílení v síti, protože máme službu SQL Server spuštěnou jako lokální systém, který se opět nemůže dostat na žádné síťové zdroje.

    Aby SQL mohl zálohovat přímo do síťové sdílené položky, musíme spustit službu SQL Server jako lokální účet, který má přístup k síťovým zdrojům.

    Upravte vlastnosti služby SQL Server a na kartě Přihlášení nakonfigurujte službu jako alternativní účet, který má přístupová práva k síti.

    Po klepnutí na tlačítko OK se zobrazí výzva, aby se nastavení nezměnilo, dokud nebude služba restartována.

    Restartujte službu.

    Seznam služeb by nyní měl zobrazit, že služba SQL Server běží jako účet, který jste nakonfigurovali.

    Nyní, když spustíte příkaz pro zálohování přímo do síťové sdílené složky:

    SqlCmd -E -Q "zálohovací databáze MyDB na disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""

    Měli byste vidět zprávu o úspěchu:

    Spracováno 152 stran pro databázi 'MyDB', soubor 'MyDB' v souboru 1.
    Zpracovány 2 stránky pro databázi 'MyDB', soubor 'MyDB_log' v souboru 1.
    BACKUP DATABASE úspěšně zpracováno 154 stran za 0,503 sekund (2,493 MB / s).

    Se záložním souborem nyní v adresáři sdílení v síti:

    Údaje o sdílení sítě

    Je důležité poznamenat, že příkaz pro zálohování očekává, že se bude moci přímo připojit ke sdílené síti, aniž by byl vyzván k zadání pověření. Účet, který jste nakonfigurovali službu SQL Server spuštění, musí mít důvěryhodné připojení se síťovou sdílenou složkou, kde příslušné pověření umožňují přístup, jinak může dojít k takové chybě:

    Msg 3201, úroveň 16, stav 1, server JF, řádek 1
    Nelze otevřít zálohovací zařízení '\ 192.168.16.55BackupDatabasesMyDB.bak'. Chyba operačního systému 1326 (Selhání přihlášení: neznámé uživatelské jméno nebo špatné heslo.).
    Msg 3013, úroveň 16, stav 1, server JF, řádek 1
    ZÁLOHOVÁNÍ DATABÁZE se abnormálně ukončí.

    Tato chyba označuje, že uživatelské jméno a heslo účtu nebylo sdílenou sítí akceptováno a příkaz selhal.

    Dalším problémem, který je třeba mít na paměti, je, že zálohování probíhá přímo na síťovém zdroji, takže jakékoli škytavka v síťovém připojení může způsobit selhání vaší zálohy. Z tohoto důvodu byste měli pouze zálohovat na místa v síti, která jsou stabilní (tedy pravděpodobně ne VPN).

    Bezpečnostní důsledky

    Jak již bylo zmíněno výše, je preferována metoda, při které se lokálně zálohujete a poté zkopírujete do síťové sdílené položky, protože umožňuje spouštět službu SQL jako účet pouze s místním systémovým přístupem.

    Spuštěním služby jako alternativního účtu otevřete dveře potenciálním bezpečnostním problémům. Například škodlivý SQL skript by mohl spouštět pod náhradním účtem a napadnout síťové prostředky. Navíc jakékoli změny příslušného účtu (změny hesla / vypršení platnosti nebo odstranění / zakázání účtu) způsobí, že služba SQL Server nebude úspěšně spuštěna.

    Je důležité mít tyto body v paměti, pokud spustíte instanci serveru SQL Server pomocí alternativního účtu. Zatímco se nezobrazují zátky, pokud jsou přijata vhodná opatření, měli byste zvážit přidání dalšího místa na pevném disku a poté implementovat lokální zálohu a kopírovat, abyste mohli spustit službu SQL pomocí lokálního účtu.