Hemsida » hur » Säkerhetskopiera och återställ din SQL Server-databas från kommandoraden

    Säkerhetskopiera och återställ din SQL Server-databas från kommandoraden

    Den viktigaste delen av en SQL Server-underhållsplan är att säkerhetskopiera dina databaser regelbundet. För att säkerhetskopiera en databas kan du inte bara kopiera respektive MDF- och LDF-filer i databasen eftersom SQL Server har ett lås på dessa. Istället måste du skapa en sann säkerhetskopia via SQL Server.

    Även om detta kan ske genom att utveckla en underhållsplan inuti SQL Management Studio, erbjuder inte de gratis Express-utgåvorna av SQL Server detta gränssnitt. För att arbeta runt om det här kan du enkelt säkerhetskopiera dina databaser genom att köra kommandot nedan medan du är inloggad som en Windows-administratör:

    SqlCmd -E -S Server_Name -Q "BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak ""

    Exemplen nedan hjälper till.

    Standard SQL Server-instans:

    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [MyDB] AT DISK =" D: BackupsMyDB.bak ""

    Namngiven SQL Server-förekomst:

    SqlCmd -E -S MyServerMyInstance -Q "BACKUP DATABASE [MyDB] AT DISK =" D: BackupsMyDB.bak ""

    Ovanstående skapar en fullständigt återställd säkerhetskopia av "MyDB" till filen "D: BackupsMyDB.bak" som kan användas för katastrofåterställning. Självklart kan du ändra säkerhetskopieringsplatsen och filen till allt du behöver, men se till att du anger en mappplats som finns på den lokala maskinen. Den här säkerhetskopieringsfilen kan sedan kopieras till en bandenhet eller en annan extern backupplats.

    En vanlig fråga är "Kan en säkerhetskopieringsfil skapas till en mappad enhet eller UNC-plats?" Och det snabba svaret är nej. Anledningen till detta är att SQL Server Windows Service körs som ett användarkonto som endast har åtkomst till den lokala maskinen. Du kan ändra kontot som tjänsten körs, men det är mycket avskräckt av säkerhetsskäl.

    Återställa en databas säkerhetskopiering från kommandoraden

    För att återställa en databas från en backup-fil, använd bara kommandot:

    SqlCmd -E -S Server_Name -Q "RESTORE DATABASE [Name_of_Database] FRÅN DISK =" X: PathToBackupFile [File_Name] .bak ""

    Till exempel:

    SqlCmd -E -S MyServer -Q "RESTORE DATABASE [MyDB] FRÅN DISK =" D: BackupsMyDB.bak ""

    Ovanstående kommando kommer att återställa en säkerhetskopia av "MyDB" från de data som lagras i säkerhetskopieringsfilen "D: BackupsMyDB.bak". Alla ändringar som gjorts i MyDB sedan säkerhetskopieringsfilen skapades kommer att gå vilse.

    En viktig sak att komma ihåg när du använder ovanstående kommando är att den är avsedd att användas på samma SQL-server som den respektive säkerhetskopieringsfilen skapades på. SQL-backup-filer lagrar "bakom kulisserna" information som styr var och hur datafilerna i säkerhetskopieringsfilen kopieras. Om du återställer en säkerhetskopia från en annan SQL Server kanske sökvägarna i säkerhetskopieringsfilen inte matchar servern som du återställer till och ett fel kommer att uppstå. Medan detta kan fungera är det mycket lättare att återställa säkerhetskopior skapade på en annan SQL Server med hjälp av SQL Management Studio-verktyget.

    Obs! Kommandona ovan kommer att fungera på SQL 2005 och högre (någon utgåva). För SQL 2000 och tidigare, ersätt 'SqlCmd' med 'oSql'.