Hoe SQL-databases te back-uppen naar een netwerkshare
Het regelmatig back-uppen van SQL-databases is een must. We hebben al manieren besproken om eenvoudig een back-up te maken van al uw SQL-serverdatabases naar een lokale harde schijf, maar dit biedt geen bescherming tegen schijf- en / of systeemfouten. Als extra beveiligingslaag tegen dit soort rampen kunt u uw back-ups op een netwerkshare kopiëren of direct maken.
Maak een lokale back-up en kopieer vervolgens naar Netwerk delen
De voorkeurs- en meest directe manier om deze taak uit te voeren, is eenvoudigweg om een lokale back-up van een database te maken en vervolgens het respectieve back-upbestand naar een netwerkshare te kopiëren. U kunt dit doen door een batch-script te maken dat er als volgt uitziet:
SET LocalFolder = C: Program Files Microsoft SQL ServerMSSQL.1MSSQLBackup
SqlCmd -E -Q "Backup Database MyDB To Disk ="% LocalFolder% MyDB.bak ""
XCopy "% LocalFolder% MyDB.bak" "\ 192.168.16.55Back-upDatabases" / Z / V
DEL "% LocalFolder% MyDB.bak"
Dit script doet het volgende (regel voor regel):
- Stelt een variabele in op de lokale SQL-backupdirectory.
- Maakt een SQL-backup van MyDB (met Windows-verificatie) naar de lokale SQL-backupdirectory.
- Kopieert het lokale back-upbestand naar een netwerkshare.
- Wist het lokale back-upbestand.
Nogmaals, dit is de geprefereerde methode omdat het uit de doos werkt en de kans op een back-upfout minimaal is, omdat de back-up op een lokale schijf wordt gemaakt. Als u echter niet genoeg schijfruimte hebt om lokale kopieën van back-upbestanden op te slaan, mislukt deze actie. In dit geval moet u extra schijfruimte of back-up rechtstreeks toevoegen aan een netwerkshare.
Rechtstreeks back-uppen naar een netwerkshare
Meestal wanneer u een back-up rechtstreeks naar een netwerkshare probeert te maken met een opdracht zoals:
SqlCmd -E -Q "Backup Database MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""
U krijgt meestal een foutmelding in de trant van:
Msg 3201, niveau 16, staat 1, server JF, regel 1
Kan back-upapparaat '\ 192.168.16.55BackupDatabasesMyDB.bak' niet openen. Besturingssysteemfout 5 (toegang is geweigerd.).
Msg 3013, Level 16, State 1, Server JF, Line 1
BACKUP DATABASE wordt abnormaal beëindigd.
Deze fout treedt op ondanks het feit dat u de SQL-back-upopdracht hebt uitgevoerd met Windows-verificatie (de -E-switch) en de Windows-account als de mogelijkheid om bestanden te openen en te kopiëren naar de share via Windows Explorer.
De reden dat deze actie mislukt, is omdat de SQL-opdracht wordt uitgevoerd binnen de grenzen van de account die de SQL Server-service uitvoert. Wanneer u de Services-lijst op uw computer bekijkt, ziet u hoogstwaarschijnlijk de SQL Server-service als (de kolom Aanmelden als) Lokaal systeem of Netwerkservice die systeemaccounts zijn die geen netwerktoegang hebben.
Op ons systeem mislukt de back-up naar een netwerkshare-opdracht omdat de SQL Server-service wordt uitgevoerd als lokaal systeem, dat opnieuw geen toegang krijgt tot netwerkbronnen..
Om SQL een directe back-up van een netwerkshare toe te staan, moeten we de SQL Server-service uitvoeren als een lokaal account dat wel toegang heeft tot netwerkbronnen.
Bewerk de eigenschappen van de SQL Server-service en op het tabblad Aanmelden, configureer de service om uit te voeren als een alternatieve account met netwerktoegangsrechten.
Wanneer u op OK klikt, wordt u gevraagd of de instellingen pas van kracht worden nadat de service opnieuw is gestart.
Start de service opnieuw.
In de serviceslijst moet nu worden weergegeven dat de SQL Server-service wordt uitgevoerd als het account dat u hebt geconfigureerd.
Nu voert u de opdracht uit om direct een back-up te maken naar een netwerkshare:
SqlCmd -E -Q "Backup Database MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak ""
U zou een succesbericht moeten zien:
Verwerkte 152 pagina's voor database 'MyDB', bestand 'MyDB' in bestand 1.
Verwerkte 2 pagina's voor database 'MyDB', bestand 'MyDB_log' in bestand 1.
BACKUP DATABASE verwerkt 154 pagina's in 0.503 seconden (2.493 MB / sec).
Met het back-upbestand nu in de netwerkshare-map:
Overwegingen bij netwerksharing
Het is belangrijk op te merken dat de back-upopdracht verwacht rechtstreeks verbinding te kunnen maken met de netwerkshare zonder te worden gevraagd om inloggegevens. Het account dat u hebt geconfigureerd om de SQL Server-service uit te voeren, moet een vertrouwde verbinding hebben met de netwerkshare waar de respectieve legitimatiegegevens toegang toestaan, anders kan zich een dergelijke fout voordoen:
Msg 3201, niveau 16, staat 1, server JF, regel 1
Kan back-upapparaat '\ 192.168.16.55BackupDatabasesMyDB.bak' niet openen. Besturingssysteemfout 1326 (Aanmeldingsfout: onbekende gebruikersnaam of slecht wachtwoord.).
Msg 3013, Level 16, State 1, Server JF, Line 1
BACKUP DATABASE wordt abnormaal beëindigd.
Deze fout geeft aan dat de gebruikersnaam en het wachtwoord van het account niet werden geaccepteerd door de netwerkshare en de opdracht is mislukt.
Een ander probleem dat u in gedachten moet houden, is dat de back-up rechtstreeks wordt uitgevoerd naar een netwerkresource, dus eventuele haperingen in de netwerkverbinding kunnen ertoe leiden dat uw back-up mislukt. Om deze reden moet u alleen een back-up maken naar netwerklocaties die stabiel zijn (dus waarschijnlijk geen VPN).
Beveiliging implicaties
Zoals eerder vermeld, heeft het gebruik van de methode waarbij u lokaal back-upt en vervolgens naar een netwerkshare kopieert de voorkeur omdat u hiermee de SQL-service alleen als account met lokale systeemtoegang kunt uitvoeren.
Door de service als een alternatief account uit te voeren, opent u de deur naar mogelijke beveiligingsproblemen. Een kwaadaardig SQL-script kan bijvoorbeeld worden uitgevoerd onder het alternatieve account en netwerkbronnen aanvallen. Bovendien zullen wijzigingen in de betreffende account (wijzigingen in het wachtwoord / verlopen of verwijderen / uitschakelen van de account) ervoor zorgen dat de SQL Server-service niet start.
Het is belangrijk om deze punten in gedachten te houden als u uw SQL Server-instantie uitvoert met een alternatief account. Hoewel deze geen show-stoppers zijn als de juiste voorzorgsmaatregelen worden genomen, moet u overwegen extra harde schijfruimte toe te voegen en vervolgens de lokale back-up en kopie te implementeren, zodat u de SQL-service kunt uitvoeren met een lokaal account.