Pagina principala » HOWTO » 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ă

    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 face 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 blocare pe acestea. Î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_Databaza] 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 catastrofe. Desigur, puteți schimba locația și fișierul de backup 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 pe o altă locație de rezervă externă.

    O întrebare obișnuită este "Poate fi creat un fișier de rezervă într-o unitate mapată sau în locația UNC?", Iar răspunsul rapid este nu. Motivul este că serviciul SQL Server Windows Service rulează ca un cont de utilizator care are acces doar la mașina locală. Puteți schimba contul pe care rulează serviciul, dar acest lucru este extrem de 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ă, utilizați pur și simplu comanda:

    SqlCmd -E -S Server_Name -Q "RESTORE DATABASE [Denumire_Databaza] FROM 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 rezervă 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 se utilizează 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 să apară 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".