Sikkerhetskopier og gjenopprett SQL Server-databasen fra kommandolinjen
Den viktigste delen av en SQL Server vedlikeholdsplan er å sikkerhetskopiere databasene dine regelmessig. For å sikkerhetskopiere en database, kan du ikke bare kopiere de respektive MDF- og LDF-filene i databasen da SQL Server har en lås på disse. I stedet må du opprette en sann sikkerhetskopieringsfil gjennom SQL Server.
Selv om dette kan gjøres ved å utvikle en vedlikeholdsplan inne i SQL Management Studio, tilbyr ikke de gratis Express-utgavene av SQL Server dette grensesnittet. For å omgå dette, kan du enkelt sikkerhetskopiere databasene dine ved å kjøre kommandoen nedenfor mens du er logget inn som en Windows-administrator:
SqlCmd -E -S Server_Name -Q "BACKUP DATABASE [Name_of_Database] TIL DISK =" X: PathToBackupLocation [Name_of_Database] .bak ""
Eksemplene nedenfor vil hjelpe.
Standard SQL Server-forekomst:
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [MyDB] TIL DISK =" D: BackupsMyDB.bak ""
Navngitt SQL Server-forekomst:
SqlCmd -E -S MyServerMyInstance -Q "BACKUP DATABASE [MyDB] TIL DISK =" D: BackupsMyDB.bak ""
Ovennevnte oppretter en fullstendig gjenopprettelig sikkerhetskopi av "MyDB" til filen "D: BackupsMyDB.bak" som kan brukes til katastrofeoppretting. Selvfølgelig kan du endre sikkerhetskopieringsstedet og filen til alt du trenger, men sørg for at du spesifiserer en mappeplassering som finnes på den lokale maskinen. Denne sikkerhetskopieringsfilen kan da kopieres til en båndstasjon eller en annen ekstern backupplassering.
Et vanlig spørsmål er "Kan en sikkerhetskopieringsfil opprettes til en kartlagt stasjon eller UNC-sted?" Og det raske svaret er nei. Årsaken er at SQL Server Windows Service kjører som en brukerkonto som bare har tilgang til den lokale maskinen. Du kan endre kontoen tjenesten kjører som, men dette er svært motløs av sikkerhetshensyn.
Gjenoppretting av databasetrygging fra kommandolinjen
For å gjenopprette en database fra en sikkerhetskopifil, bruk bare kommandoen:
SqlCmd -E -S Server_Name -Q "RESTORE DATABASE [Name_of_Database] FRA DISK =" X: PathToBackupFile [File_Name] .bak ""
For eksempel:
SqlCmd -E -S MyServer -Q "RESTORE DATABASE [MyDB] FRA DISK =" D: BackupsMyDB.bak ""
Kommandoen ovenfor vil gjenopprette en sikkerhetskopi av "MyDB" fra dataene som er lagret i sikkerhetskopifilen "D: BackupsMyDB.bak". Eventuelle endringer som er gjort til MyDB siden sikkerhetskopieringsfilen ble opprettet, vil gå tapt.
En viktig ting å huske når du bruker kommandoen ovenfor, er at den skal brukes på samme SQL Server som den respektive backupfilen ble opprettet på. SQL-backupfiler lagrer "bak kulissene" -informasjonen som styrer hvor og hvordan datafilene i sikkerhetskopifilen kopieres. Hvis du gjenoppretter en sikkerhetskopiering fra en annen SQL Server, kan stiplasseringene i sikkerhetskopifilen kanskje ikke matche serveren du gjenoppretter til, og det oppstår en feil. Selv om dette kan jobbe rundt, er det mye lettere å gjenopprette sikkerhetskopier opprettet på en annen SQL Server ved hjelp av SQL Management Studio-verktøyet.
Merk: kommandoene ovenfor vil fungere på SQL 2005 og høyere (noen utgave). For SQL 2000 og tidligere, erstatt 'SqlCmd' med 'oSql'.