If-Koubou

Actualizați și restaurați baza de date SQL Server din linia de comandă

Actualizați și restaurați baza de date SQL Server din linia de comandă (Cum să)

Partea cea mai importantă a unui plan de întreținere SQL Server este crearea de rezervă a bazelor de date în mod regulat. Pentru a crea o copie de rezervă a unei baze de date, nu puteți copia pur și simplu fișierele respective MDF și LDF ale bazei de date, pe măsură ce SQL Server are o cheie de blocare a acestora. În schimb, trebuie să creați un fișier de backup adevărat prin SQL Server.

În timp ce acest lucru se poate face prin dezvoltarea unui plan de întreținere în interiorul SQL Management Studio, edițiile gratuite Express ale SQL Server nu oferă această interfață. Pentru a rezolva această problemă, puteți să salvați cu ușurință bazele dvs. de date executând comanda de mai jos în timp ce sunteți conectat ca Administrator Windows:

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

Exemplele de mai jos vă vor ajuta.

Implicit instanță SQL Server:

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

Numele instanței SQL Server:

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

Cele de mai sus creează o copie de siguranță complet restaurată a "MyDB" în fișierul "D: BackupsMyDB.bak" care poate fi folosit pentru recuperarea în caz de dezastru. Desigur, puteți schimba locația de backup și fișierul la orice ai nevoie, dar asigurați-vă că specificați o locație de folder care există pe mașina locală. Acest fișier de rezervă poate fi apoi copiat pe o unitate de bandă sau o altă locație de rezervă externă.

O întrebare obișnuită este "Poate fi creat un fișier de rezervă pentru o unitate mapată sau locație UNC?", Iar răspunsul rapid este nu. Motivul este că SQL Server Windows Service rulează ca un cont de utilizator care are acces numai la mașina locală. Puteți schimba contul pe care rulează serviciul, dar acest lucru este foarte descurajat din motive de securitate.

Restaurarea unei copii de rezervă a bazei de date din linia de comandă

Pentru a restaura o bază de date dintr-un fișier de rezervă, pur și simplu utilizați comanda:

SqlCmd -E -S Server_Name -Q "RESTORE DATABASE [Denumire_Databaza] Din DISK =" X: PathToBackupFile [File_Name] .bak ""

De exemplu:

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

Comanda de mai sus va restaura o copie de siguranță a "MyDB" din datele stocate în fișierul de backup "D: BackupsMyDB.bak". Orice modificări aduse MyDB de la crearea fișierului de backup vor fi pierdute.

Un lucru important de reținut când utilizați comanda de mai sus este că este destinat să fie utilizat pe același server SQL pe care a fost creat fișierul de rezervă respectiv. Fișierele de backup SQL stochează informațiile "în spatele scenei" care controlează unde și cum se copiază fișierele de date din fișierul de rezervă. Dacă restaurați o copie de rezervă de la un alt server SQL, locațiile căii din fișierul de rezervă s-ar putea să nu se potrivească cu serverul la care vă refaceți și va rezulta o eroare. În timp ce acest lucru poate fi rezolvat, este mult mai ușor să restaurați copii de rezervă create pe un alt server SQL utilizând instrumentul SQL Management Studio.

Notă: comenzile de mai sus vor funcționa pe SQL 2005 și versiuni ulterioare (orice ediție). Pentru SQL 2000 și versiuni anterioare, înlocuiți "SqlCmd" cu "oSql".