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 GUI.
Här kommer jag att visa hur man skapar en säkerhetskopia med SQL Operations Studio (nu kallad Azure Data Studio) GUI, sedan med Transact-SQL och till sist med SQL Server Powershell.
Skapa en säkerhetskopia via SQLOPS/Azure Data Studio GUI
-
Öppna Databas Dashboard
I den vänstra rutan högerklickar du på databasen som du vill säkerhetskopiera och väljer Hantera .
Om du använder SSMS högerklickar du i Objektutforskaren på databasen du vill säkerhetskopiera och väljer Tasks> Back Up... från den sammanhangsberoende menyn. Detta kommer att starta Säkerhetskopiera databasen dialogrutan.
-
Starta Backup-databasen Dialogrutan
Klicka på Säkerhetskopiering knapp.
-
Granska instä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å Säkerhetskopiera för att skapa säkerhetskopian.
Om du har specifika säkerhetskopieringskrav kan du ändra säkerhetskopieringstypen och/eller klicka på Avancerad konfiguration för att justera de avancerade konfigurationsinställningarna.
-
Säkerhetskopieringen är klar
När säkerhetskopieringen är klar visas ett meddelande som bekräftar att säkerhetskopieringen lyckades.
Säkerhetskopiera en databas med Transact-SQL
Du kan utföra samma säkerhetskopiering som ovan med T-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.
Nedan är ett exempel på ett enkelt säkerhetskopieringsskript på ett Linux- eller Mac-system. Skriptet anger databasen som ska säkerhetskopieras och platsen som den ska säkerhetskopieras till.
BACKUP DATABASE Music TO DISK = '/var/opt/mssql/data/Music.bak';
På ett Windows-system kommer sökvägen att använda snedstreck:
BACKUP DATABASE Music TO DISK = 'C:\Backups\Music.bak';
Efter att ha kört den här koden kommer säkerhetskopian att finnas på den angivna platsen.
Säkerhetskopiera en databas med PowerShell
SQL Server 2017 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.
Följande kod kommer att skapa en säkerhetskopia precis som de tidigare exemplen. Byt bara ut MyServer
med namnet på din server.
Backup-SqlDatabase -ServerInstance MyServer -Database Music
Du kan också ange en plats
Backup-SqlDatabase -ServerInstance MyServer -Database Music -BackupFile 'C:\Backups\Music.bak'
Efter att ha kört den här koden kommer säkerhetskopian att placeras på standardplatsen.
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 gör flera säkerhetskopior med samma filnamn för säkerhetskopian, kanske du märker att varje gång du kör en säkerhetskopia ökar filstorleken på säkerhetskopian.
Detta beror på att varje efterföljande säkerhetskopia lägger till sig själv i den befintliga filen. Den gör detta eftersom du använder samma filnamn och du 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 SQLOPS GUI , klicka på Avancerad konfiguration och under Säkerhetskopiera till befintlig mediauppsättning , välj Skriv över alla befintliga säkerhetskopior .
- Använda SSMS 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.
Använda unika filnamn
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.