SQL Server ger ett enkelt sätt att skapa en säkerhetskopia av en databas. Säkerhetskopiering kan göras antingen med Transact-SQL, PowerShell eller via SQL Server Management Studio GUI.
Här kommer jag att demonstrera hur man skapar en säkerhetskopia med SQL Server Management System GUI, sedan använder Transact-SQL och slutligen med SQL Server Powershell.
Skapa en säkerhetskopia via GUI
-
Starta Säkerhetskopiera databasen Dialogrutan
I objektutforskaren högerklickar du på databasen du vill säkerhetskopiera och väljer Tasks> Back Up... från den sammanhangsberoende menyn.
-
Granska säkerhetskopieringsinställningarna
Denna dialogruta ger dig möjlighet att ändra någon av inställningarna om det behövs.
För vårt exempel, lämna det på standardinställningarna och klicka på OK för att skapa säkerhetskopian.
Du kan ändra databasen här om du av misstag valde fel i föregående steg.
-
Säkerhetskopieringen är klar
Du får ett meddelande när säkerhetskopieringen är klar.
Klicka på OK för att stänga meddelandet och dialogrutan.
Säkerhetskopieringsfilen kommer nu att finnas på den angivna platsen.
Säkerhetskopiera en databas med Transact-SQL
-
Du kan utföra samma säkerhetskopiering som ovan med SQL.
För att göra detta, öppna ett nytt frågefönster och kör en
BACKUP
uttalande.BACKUP
statement accepterar olika alternativ (precis som GUI-alternativet), men du kan också köra en enkel säkerhetskopiering med ett minimum av kod.Exempelkod
Nedan är ett exempel på ett enkelt säkerhetskopieringsskript som anger databasen som ska säkerhetskopieras och platsen som den ska säkerhetskopieras till.
Efter att ha kört den här koden kommer säkerhetskopian att finnas på den angivna platsen.
BACKUP DATABASE Music TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\Music.bak';
Du kan se hela syntaxen för
BACKUP
uttalande på Microsofts webbplats.
Säkerhetskopiera en databas med PowerShell
SQL Server 2016 stöder Windows PowerShell, som är ett skriptskal, som vanligtvis används för att automatisera administrations- och distributionsuppgifter.
PowerShell-språket stöder mer komplex logik än Transact-SQL-skript, vilket ger dig möjligheten att bygga mer sofistikerade skript för dina säkerhetskopior och andra uppgifter.
-
Öppna PowerShell
Högerklicka på databasen och välj Starta Powershell .
-
Kör kommandot Backup
Ange kommandot för att skapa säkerhetskopian och tryck på Retur (eller Return , beroende på ditt tangentbord).
Säkerhetskopieringen kommer att köras omedelbart.
Exempelkod
Följande kod kommer att skapa en säkerhetskopia precis som de tidigare exemplen. Byt bara ut
MyServer
med namnet på din server.Efter att ha kört den här koden kommer säkerhetskopian att placeras på standardplatsen.
Backup-SqlDatabase -ServerInstance MyServer -Database Music
Du kan också ange en plats
Backup-SqlDatabase -ServerInstance MyServer -Database Music -BackupFile 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\Music.bak'
Du kan också ange
-BackupAction Database
att uttryckligen ange att det är en fullständig säkerhetskopia. Detta är dock standardalternativet.Du kan se hela dokumentationen för
Backup-SqlDatabase
kommandot på Microsofts webbplats.
Skriv över säkerhetskopior
Om du körde alla ovanstående exempel exakt som de är, kanske du har märkt att varje gång du körde det ökade filstorleken på säkerhetskopian.
Detta beror på att varje efterföljande säkerhetskopia lägger till sig själv i den befintliga filen.
Det gör detta för att vi använder samma filnamn och vi har inte uttryckligen specificerat att varje säkerhetskopia ska skriva över någon befintlig fil.
Det finns ett alternativ som låter dig skriva över den befintliga filen.
- Använda GUI , klicka på Mediealternativ i den vänstra menyn i Säkerhetskopiera databasen dialogrutan och välj Skriv över alla befintliga säkerhetskopior i Skriv över media avsnitt.
- Använder SQL lägg till
WITH INIT
till SQL-satsen. - Använda Powershell , lägg till
-Initialize
till kommandot.
Spara säkerhetskopior
Det är dock ofta en bra idé att skapa en fullständig säkerhetskopia med ett unikt filnamn (vanligtvis inklusive datum i filnamnet). Att ha ett unikt filnamn innebär att varje säkerhetskopia blir en separat fil.
Beroende på storleken på din databas och hur mycket ny data som läggs in i den, kanske du vill komplettera dina fullständiga säkerhetskopior med differentiella säkerhetskopior. En differentiell säkerhetskopiering fångar endast de data som har ändrats sedan den senaste fullständiga säkerhetskopieringen.