SQL. Konfigurera en säkerhetskopia


"Vem äger information - han äger världen" - Mayer Amschel Rothschild

Den mest värdefulla enheten i alla företag är information. Förlust av information kan leda till oförutsägbara konsekvenser, främst ekonomiska. Därför är en av IT-specialisternas huvuduppgifter att säkerhetskopiera hela IT-infrastrukturen. Detta gäller även MS SQL Server-databaser.


För att säkerställa säkerheten för informationen i de databaser som används, samt för att minska tiden för att återställa funktionalitet, är det nödvändigt att göra periodiska säkerhetskopior av SQL-servrar.

Låt oss ta ett enkelt exempel: du måste ställa in en databassäkerhetskopiering till en separat disk.

Lösning:

  1. Vi öppnar Microsoft SQL Server Management Studio... Öppna fliken i navigeringsmenyn till höger "Kontrollera"... Där ser vi en flik "Serviceplaner"... Högerklicka -> "Skapa en serviceplan" och ge vår plan ett namn (fig. 1):

Fig. 1 Skapa en ny serviceplan.

2. Lägg till en uppgift i verktygsfältet "Säkerhetskopiera databasen"(Fig. 2):

Fig.2 Lägga till uppgiften "Databas backup".

3. Högerklicka på den skapade uppgiften -> "Förändra"(Fig. 3):

4. I fönstret för uppgiftsegenskaper, välj typ av säkerhetskopia (i mitt fall, full), välj önskad databas (jag har ka_cons), katalogen för säkerhetskopior, möjligheten att kontrollera säkerhetskopior för integritet och komprimeringsalternativ för dessa (Fig. 4-6):


Fig. 4 Säkerhetskopieringstyp - full.

Fig.5 Välja en databas för säkerhetskopiering.

Fig.6 Definiera en katalog för säkerhetskopior, integritetskontroller och kompressionsförhållande.

5. På inställningspanelen för serviceplanen till höger. tryck på knappen "Schema"(Fig. 7):

6. Ställ in det schema vi behöver och klicka "OK"(Fig. 8):

Fig. 8 Konfigurera ett backupschema.

7. Spara vår serviceplan (bild 9):

Fig. 9 Spara underhållsplanen.

Schemalagd fullständig säkerhetskopiering av databas är konfigurerad.

2. Visa information om säkerhetskopiering och återställningshändelser för databasen

För att ta reda på när en specifik databas säkerhetskopierades, samt återställa en databas från en säkerhetskopia, kan du använda standardrapporten " "(Säkerhetskopiera och återställa händelser). För att generera denna rapport, högerklicka på motsvarande databas i Server Oblects, välj " Rapporter"(Rapporter) -" Standardrapport"(Standartrapporter) -" Säkerhetskopiera och återställa händelser"(Säkerhetskopiera och återställa händelser).

Den genererade rapporten innehåller följande data:

  • Genomsnittlig tid det tar för säkerhetskopiering
  • Lycklig säkerhetskopiering
  • Säkerhetskopieringsfel
  • Lyckliga återställningsåtgärder

För att se denna information måste du utöka motsvarande gruppering i rapporten.

Hjälpte den här artikeln dig?

Låt oss återställa databasen "Test _Recovery" till tillståndet " t 4».

Låt oss börja återställa databasen från den fullständiga säkerhetskopian "Full2_Test_Recovery.bak" med "SQL Server Management Studio ". Högerklicka på databasen " Testa _ Återställning ", I menyn som visas, välj" Uppgifter ", sedan" Återställ ", sedan" Databas ".

I det visade fönstret "Återställ databas "i" Sourse "sektionen, välj" Enhet ". Nästa "Lägg till ", Skriv sökvägen" \\ vniz - tst - bkp 01. test. lokal \ Säkerhetskopiering _ SQL \ Fullständig 2_ Test _ Återställning. bak ", klicka på" Ok ". I avsnittet "Destination" väljer du Databas "Teståterställning"

Klicka på "Ok"

Basen kommer att återställas framgångsrikt.

Låt oss titta på att återställa en databas med Transact-SQL.

Högerklicka på databasen "Test_Recovery", välj "Ny fråga" i menyn som visas:

I fönstret som visas anger du:

ANVÄNDA SIG AV bemästra

ÅTERSTÄLL DATABASE Test_Recovery

FRÅN DISK = "\\ vniz-tst-bkp01.test.local \ Backup_SQL \ Full2_Test_Recovery.bak"

MED BYTA UT

Basen kommer att återställas framgångsrikt.

I det här exemplet använde vi parametern "REPLACE":

Återställning förhindrar vanligtvis att en annan databas av misstag skriver över en databas. Om databasen som anges i RESTORE-satsen redan finns på den aktuella servern och familjens GUID för den angivna databasen skiljer sig från databasfamiljens GUID som registrerats i säkerhetskopian, kommer den inte att återställas.

Alternativet REPLACE åsidosätter flera viktiga kontroller som vanligtvis utförs av en återställningsoperation. Följande kontroller annulleras.

  • Sök efter återställning över en befintlig databas från en säkerhetskopia som skapats för en annan databas.När du använder parametern REPLACE under en återställning kan du skriva data över en befintlig databas oavsett vilka databaser som finns i backup-uppsättningen, även om det angivna datanamnet skiljer sig från det som skrivits i backup-setet. Detta kan leda till att en annan databas skrivs över av misstag.
  • Sök efter återställning på en databas med hjälp av en fullständig eller bulkloggad återställningsmodell som inte har säkerhetskopierats till bakloggen och inte har tillämpats med STOPAT-alternativet.Om du använder alternativet ERSÄTT, kan du förlora registrerad data eftersom den senast loggade datan ännu inte har säkerhetskopierats.
  • Skriv över existerande filer.

Vi fortsätter att prata om backup och idag ska vi lära oss skapa ett arkiv av Microsoft SQL Server 2008-databasen... Vi kommer att överväga allt som vanligt med exempel som använder både ett grafiskt gränssnitt och med en SQL-fråga, och även ställa in en automatisk skapa en säkerhetskopia med hjälp av en batchfil.

Vi kommer inte att återkomma till frågan om vikten av att säkerhetskopiera databasen, eftersom vi redan har tagit upp detta ämne mer än en gång, till exempel i materialet:

Och i den förra artikeln sa jag att vi kommer att överväga möjligheten att skapa ett arkiv på MS SQL Server 2008 DBMS, så nu ska vi göra just det.

Och eftersom det redan har funnits mycket teori, låt oss gå direkt till praktiken, nämligen att skapa en backup-databas.

Notera! Som du kan se från titeln på artikeln kommer vi att göra arkivet på Microsoft SQL 2008 DBMS med Management Studio. Servern är lokaliserad. Windows 7 OS.

Hur man skapar ett arkiv av en SQL-serverdatabas

Låt oss definiera att vi kommer att göra ett arkiv av en testbas som heter "test". Från början, genom det grafiska gränssnittet, och i processen, kommer vi att skriva ett skript så att du i framtiden helt enkelt kan köra det och inte längre distraheras genom att ange alla typer av parametrar.

Öppna Management Studio, öppna « Databas» , välj önskad bas, högerklicka på den, välj Uppgifter-> Skapa säkerhetskopia

Du kommer att se ett fönster " Databas backup», Där du kan ställa in arkiveringsparametrarna. Jag gav bara ett namn" Säkerhetskopiera dataset", Och ändrade även namnet på arkivet och sökvägen, eftersom det som standard kommer att skapas i mappen Programfiler, till exempel var min standardsökväg

C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ Backup \

Till exempel ändrade jag det till C: \ temp \ och namngav arkivet test_arh.bak

Även om du går till fliken « alternativ», då kan du ställa in inställningen för att skriva över alla datamängder, nu ska jag förklara vad det är. Om du lämnar allt som det är, d.v.s. lägg till en befintlig datauppsättning, så kommer du att ha en säkerhetskopia, men med flera kopior av datamängden, d.v.s. vid återställning väljer du helt enkelt den uppsättning du behöver. Och om du lägger " Skriv över alla befintliga backupdatauppsättningar”, Då kommer uppsättningen alltid att vara en, då måste du i det här fallet skapa arkiv (låt oss säga dagligen) med olika namn. Jag ställer in på att skriva över, för låt oss säga att jag i framtiden planerar att skapa arkiv för varje dag med datum i namnet på dessa arkiv, så att jag vid behov snabbt kan kopiera säkerhetskopian jag behöver för ett specifikt datum till någon plats.

Och förresten, vid det här laget, efter att ha angett alla parametrar, kan du skapa ett skript för att spela in det och använda det senare. För att göra detta, klicka bara högst upp på " Scenario».

Och som ett resultat av denna åtgärd öppnas ett förfrågningsfönster där koden för detta skript kommer att finnas. Vi återkommer till det lite senare, men för nu, klicka på "OK" och efter att operationen är klar ser du ett fönster där resultatet av säkerhetskopieringen kommer att indikeras, om allt är bra kommer följande meddelande att visas

Skapa ett arkiv av SQL-serverdatabasen genom en fråga

Om du gjorde allt som ovan ( de där. klickade på "Script"), så har du öppnat ett frågefönster, där det faktiskt finns en begäran om att skapa ett arkiv, men vi kommer att göra om det lite, eftersom jag sa att vi planerar att köra det varje dag, så att namnet var lämpligt, vi kommer att skriva denna SQL-sats...

DEKLARERA @sökväg SOM VARCHAR (200) SÄTT @sökväg = N "C: \ temp \ test_arh_" + KONVERTERA (varchar (10), getdate (), 104) + ".bak" BACKUP DATABAS TILL DISK = @sökväg MED NOFORMAT, INIT, NAME = N "Databastest", SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO

Och nu om vi kör det, kommer vi att skapa en säkerhetskopia av databasen som heter test_arh_ Det aktuella datumet.bak

Automatiskt skapande av backup på SQL-server

För dessa ändamål i MS SQL 2008 finns en speciell funktion som kallas " Serviceplaner", Där du bara kan ställa in ett schema för att skapa en säkerhetskopia av databaser, men jag föreslår att du använder en bat-fil för dessa ändamål för att konfigurera den i schemaläggaren och så att den startar varje dag och gör en säkerhetskopia av databasen.

För att göra detta, kopiera SQL-satsen som vi diskuterade ovan och klistra in den i anteckningsblocket ( rekommenderar Notepad ++), spara sedan med tillägget .sql de där. detta skript kommer att köras på MS SQL 2008. Sedan måste vi skriva en batchfil för att den ska kunna ansluta till SQL-servern och köra vårt skript. Vi skriver också i ett anteckningsblock:

SET cur_date =% datum: ~ 6,4 %% datum: ~ 3,2 %% datum: ~ 0,2% osql -S localhost -i C: \ temp \ test.sql -o C: \ temp \% cur_date % _log_sql.log –E

där jag skapade variabeln cur_date för att lagra det aktuella datumet i den, sedan ansluter jag till den lokala servern via verktyget osql, som använder ODBC och kör vårt skript ( Jag döpte den till test.sql), och skriv även ner loggen, var exakt vi behövde vår variabel, det är allt, vi sparar den med tillägget .fladdermus, vi skapar en uppgift i schemaläggaren och vi kan säga att vi glömmer processen att arkivera databasen, ja, vi kontrollerar bara regelbundet om arkivet skapades eller inte.

För grunderna räcker detta, nu vet du hur du kan säkerhetskopiera databaser på SQL Server 2008, i nästa artikel kommer vi att titta på hur du kan återställa en databas på MS SQL Server 2008. För nu är det allt! Lycka till!

Det rekommenderas att anpassa regelbundna säkerhetskopior av databas(vid hårdvaru- eller mjukvarufel), och det är bäst med säkerhetskopior av de senaste dagarna, till exempel sju (för den senaste veckan).

För att göra detta kan du använda antingen den inbyggda SQL Server Task Scheduler - "SQL Server Agent" (ingår inte i gratisversionen), eller standarden "Windows Scheduler" i kombination med verktyget SQLCMD.EXE, som låter dig för att köra frågor till SQL Server från kommandoraden. I schemaläggaren måste du skapa minst sju uppgifter (en för varje veckodag), som var och en (en gång i veckan) kommer att ersätta en av de sju filerna som innehåller motsvarande databasbackup.

Dessutom rekommenderas det att lagra säkerhetskopior inte bara på hårddisken på den dator där SQL Server är installerad, utan också att duplicera dem till tejp eller hårddisk på en annan dator i nätverket. För att göra detta kan du antingen använda speciell programvara som låter dig göra säkerhetskopior av hela disken, eller använda samma schemaläggare för att kopiera filer till band eller en annan dator (i det andra steget).

Använda Windows Scheduler (för gratisversionen)

För att skapa en uppgift i Windows Scheduler behöver du:

Starta programmet Anteckningar (Start-> Alla program-> Tillbehör-> Anteckningar) och ange följande två rader och spara dem sedan som en batchfil (* .BAT):

SQLCMD -S (lokal) -E -Q "BACKUP DATABAS AltaSVHDb TO DISK =" D: \ BACKUP \ AltaSVHDb_monday.bak "WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
XCOPY D: \ BACKUP \ AltaSVHDb_monday.bak \\ BACKUP_SERVER \ Mapp \ *. * / Y

var "(Lokal)"- servernamn (om du installerar en namngiven instans av SQL Server måste du ange det fullständiga namnet: "COMPUTER_NAME \ SQLEXPRESS"), "AltaSVHDb"- namnet på databasen, "D: \ BACKUP \ AltaSVHDb_monday.bak"- namnet på filen för att skapa en säkerhetskopia i den (kommer att skilja sig beroende på veckodagar), "BACKUP_SERVER"- namnet på den dator till vilken ytterligare kopiering kommer att utföras, "Mapp"- en mapp på den här datorn (den måste delas).

Kör guiden Task Scheduling (Kontrollpanelen-> Schemalagda uppgifter-> Lägg till uppgift) och klicka på knappen "Nästa":

Klicka på knappen "Bläddra" och ange sökvägen till batchfilen (* .BAT) som skapades i steg a):

Ange ett namn för uppgiften, välj alternativet "veckovis" och klicka på knappen "Nästa":

Markera rutan bredvid önskad veckodag, och i fältet "Starttid" anger du tidpunkten då säkerhetskopieringsprocessen ska starta (vanligtvis görs detta på natten), klicka sedan på knappen "Nästa":

Ange användarnamnet och lösenordet (två gånger) för OS-kontot för vilket uppgiften kommer att utföras och klicka på knappen "Nästa":

Uppmärksamhet! För att uppgiften ska slutföras framgångsrikt måste du ge kontot som anges här (domän eller lokal dator) skrivrättigheter till ovannämnda mapp "\\ BACKUP_SERVER \ Mapp" och även konfigurera åtkomst till SQL Server själv.

Klicka på knappen "Slutför".

Notera... För att kontrollera prestandan för den skapade uppgiften, i listan med uppgifter (Kontrollpanelen-> Schemalagda uppgifter), högerklicka på uppgiften av intresse och välj "Kör" i snabbmenyn, se till att säkerhetskopieringsfilen för databasen var framgångsrikt skapat längs de vägar som specificerades i steg a).

Använda "SQL Server Agent" (ingår inte i gratisversionen)

För att skapa ett jobb i "SQL Server Agent" behöver du:

Starta verktyget SQL Server Management Studio och anslut till servern som administratör.

I den vänstra delen av fönstret högerklickar du på avsnittet "Serverobjekt / Säkerhetskopieringsenheter" och väljer "Skapa säkerhetskopieringsenhet" i snabbmenyn:

I fältet "Enhetsnamn" anger du ett namn som kommer att associeras med säkerhetskopieringsfilen för databasen, ändra vid behov sökvägen i fältet "Fil" och klicka på "OK":

I den vänstra delen av fönstret högerklickar du på avsnittet "SQL Server Agent/Jobb" och väljer "Skapa jobb" från snabbmenyn:

I fältet "Namn" anger du namnet på uppgiften:

På sidan "Steg" klickar du på knappen "Skapa":

I fönstret som visas anger du ett namn i fältet "Stegnamn", se till att "Transact-SQL Script (T-SQL)" är valt i fältet "Typ" och skriv in raden i fältet "Kommando" :

BACKUP DATABAS AltaSVHDb TILL AltaSVHDb_monday MED INIT, NOFORMAT, SKIP, NOUNLOAD

var "AltaSVHDb"- namnet på databasen, "AltaSVHDb_monday"- namnet på säkerhetskopieringsenheten som skapades i steg c) (kommer att variera beroende på veckodag):

I föregående fönster klickar du på knappen "OK", som ett resultat bör följande rad visas på sidan "Steg":

För att säkerhetskopieringsfilen för databasen omedelbart ska kopieras till en annan dator i nätverket är det nödvändigt att upprepa steg f) - h), i fönstret "Skapa ett uppgiftssteg" väljer du "Operativsystem (CmdExec)" i "Typ"-fältet och i "Kommando"-fältet, ange rad:

XCOPY D: \ MSSQL \ BACKUP \ AltaSVHDb_monday.bak \\ BACKUP_SERVER \ Mapp \ *. * / Y

var "D: \ MSSQL \ BACKUP \ AltaSVHDb_monday.bak"- sökvägen som anges i steg c) (kommer att skilja sig beroende på veckodag), "BACKUP_SERVER"- namnet på den dator till vilken kopieringen kommer att utföras, "Mapp"- en mapp på den här datorn (den måste delas):

Notera... För att kopiera filen framgångsrikt är det nödvändigt att köra "SQL Server Agent" under ett Windows-domänkonto, för vilket skrivbehörigheterna till den ovan nämnda mappen har beviljats ​​(se även "SQL2005_installation.doc" eller "SQL2008_installation.doc" ), och åtkomst till SQL själv är konfigurerad Server (se avsnittet "Konfigurera databasåtkomsträttigheter", detta konto måste inkluderas i rollen "sysadmin" på sidan "Serverroller" och ingenting bör göras på "Användarmappning" " och "Skyddade objekt"-sidor).

På sidan "Schedules" klickar du på knappen "Skapa":

Ange ett namn i fältet Namn, se till att Återkommande uppgift är vald i fältet Schematyp och Veckovis i fältet Pågående. Markera rutan bredvid önskad veckodag (avmarkera resten), och i fältet "Engångsuppgift" ange tidpunkten när säkerhetskopieringsprocessen ska starta (vanligtvis görs detta på natten):

I föregående fönster, klicka på knappen "OK", som ett resultat bör följande rad visas på sidan "Schedules":

Tryck på knappen "OK".

Notera... För att kontrollera prestanda för den skapade uppgiften, i avsnittet "SQL Server Agent / Uppgifter", högerklicka på uppgiften av intresse och välj "Kör uppgift vid steg" i snabbmenyn, välj det första steget av denna uppgift i fönstret som visas och klicka på "OK". Därefter visas ett fönster som visar hur uppgiften fortskrider. Om utförandet av uppgiften slutar med ett fel, kan en detaljerad beskrivning av felet ses genom att anropa "Visa logg" i samma sammanhangsmeny.







2021 gtavrl.ru.