Momentan sunteți offline, așteptați să vă reconectați la internet

Cum se mută bazele de date SQL Server într-o locaţie nouă cu ajutorul funcţiilor Detach şi Attach din SQL Server

REZUMAT
Articolul descrie cum se modifică locaţia fişierelor de date şi a fişierelor jurnal pentru orice bază de date Microsoft SQL Server 2005, SQL Server 2000 sau SQL Server 7.0.

Pentru mai multe informaţii despre cum se mută bazele de date de sistem în SQL Server 2005, consultaţi subiectul „Moving System Databases” din documentaţia online SQL Server. Pentru a vedea acest subiect, vizitaţi următorul site Web MSDN (Microsoft Developer Network):
INFORMAŢII SUPLIMENTARE
Paşii care trebuie urmaţi pentru a modifica locaţia unor baze de date de sistem SQL Server diferă de paşii care trebuie urmaţi pentru a modifica locaţia bazelor de date de utilizator. Aceste cazuri speciale sunt descrise separat.

Notă Bazele de date de sistem SQL Server 7.0 nu sunt compatibile cu SQL Server 2000. Nu ataşaţi baze de date SQL Server 7.0 master, model, msdb sau de distribuire în SQL Server 2000. Dacă utilizaţi SQL Server 2005, aveţi posibilitatea să ataşaţi baze de date SQL Server 2005 numai la o instanţă. Toate exemplele din acest articol presupun că SQL Server este instalat în folderul D:\Mssql7. În plus, exemplele presupun că toate fişierele de date şi toate fişierele jurnal sunt amplasate în folderul implicit D:\Mssql7\Data. Exemplele mută fişierele de date şi fişierele jurnal pentru toate bazele de date în folderul E:\Sqldata.

Cerinţe preliminare

  • Faceţi o copie de rezervă actuală a tuturor bazelor de date, în special a bazei de date master, din locaţia lor curentă.
  • Trebuie să aveţi permisiuni de administrator de sistem.
  • Trebuie să cunoaşteţi numele şi locaţia curentă a tuturor fişierelor de date şi a tuturor fişierelor jurnal pentru baza de date.

    Notă Se poate determina numele şi locaţia curentă a tuturor fişierelor utilizate de baza de date cu ajutorul procedurii stocate sp_helpfile:
    use <nume_bazădedate>gosp_helpfilego
  • Trebuie să aveţi acces exclusiv la baza de date pe care o mutaţi. Dacă întâmpinaţi probleme în timpul procesului şi nu este posibil să accesaţi o bază de date pe care aţi mutat-o sau dacă nu este posibilă lansarea SQL Server, examinaţi jurnalul de erori SQL Server şi documentaţia online SQL Server pentru mai multe informaţii privind erorile pe care le întâmpinaţi.

Mutarea bazelor de date de utilizator

Următorul exemplu mută o bază de date denumită mydb. Această bază de date conţine un singur fişier de date, Mydb.mdf, şi un singur fişier jurnal, Mydblog.ldf. Dacă baza de date pe care o mutaţi are mai multe fişiere de date sau fişiere jurnal, specificaţi fişierele într-o listă delimitată de virgule în procedura stocată sp_attach_db. Procedura sp_detach_db nu se modifică, indiferent de câte fişiere conţine baza de date, deoarece procedura sp_detach_db nu listează fişierele.
  1. Detaşaţi baza de date după cum urmează:
    use master   go   sp_detach_db 'mydb'   go
  2. Apoi copiaţi fişierele de date şi fişierele jurnal din locaţia curentă (D:\Mssql7\Data) în noua locaţie (E:\Sqldata).
  3. Reataşaţi baza de date. Indicaţi fişierele din noua locaţie după cum urmează:
    use master  go  sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'  go
    Verificaţi modificarea locaţiilor fişierelor utilizând procedura stocată sp_helpfile:
    use mydb   go   sp_helpfile   go
    Valorile coloanei filename trebuie să reflecte noile locaţii.
Notă Articolul 922804 din Baza de cunoştinţe Microsoft descrie o problemă a bazelor de date SQL Server 2005 dintr-un depozit ataşat de reţea. Pentru mai multe informaţii, faceţi clic pe următorul număr de articol pentru a-l vedea în Baza de cunoştinţe Microsoft:
922804 REMEDIERE: după detaşarea unei baze de date Microsoft SQL Server 2005 care este situată într-un depozit ataşat de reţea, baza de date SQL Server nu se mai poate reataşa (articolul poate să fie în limba engleză)
Aveţi în vedere această problemă. În plus, aveţi în vedere permisiunile care se aplică unei baze de date când este detaşată în SQL Server 2005. Pentru mai multe informaţii, consultaţi secţiunea „Detaching and Attaching a Database” a subiectului „Securing Data and Log Files” din documentaţia online SQL Server. Pentru a vedea acest subiect, vizitaţi următorul site Web MSDN (Microsoft Developer Network):

Mutarea bazelor de date exemplificative

Pentru a muta baza de date exemplificativă Pubs şi Northwind în SQL Server 2000 sau în SQL Server 7.0 sau pentru a muta baza de date baza de date exemplificativă AdventureWorks şi AdventureWorksDW în SQL Server 2005, urmaţi aceeaşi procedură de mutare a bazelor de date de utilizator.

Mutarea bazei de date model

SQL Server 7.0

  1. Asiguraţi-vă că SQL Server Agent nu este în curs de execuţie.
  2. Urmaţi aceeaşi procedură de mutare a bazelor de date de utilizator.

SQL Server 2005 şi SQL Server 2000

În SQL Server 2005 şi în SQL Server 2000, bazele de date de sistem nu se pot detaşa utilizând procedura stocată sp_detach_db. Când încercaţi să executaţi instrucţiunea sp_detach_db 'model', primiţi următorul mesaj de eroare:
Server: Msg 7940, Level 16, State 1, Line 1
System databases master, model, msdb, and tempdb cannot be detached.
Pentru a muta baza de date model, trebuie să porniţi SQL Server cu opţiunea -c, opţiunea -m şi semnalizarea de urmărire 3608. Semnalizarea de urmărire 3608 împiedică SQL Server să recupereze orice bază de date, cu excepţia bazei de date master.

Notă După aceasta, nu veţi reuşi să accesaţi nicio bază de date de utilizator. Trebuie să nu efectuaţi nicio operaţiune, în afara următorilor paşi, cât timp utilizaţi această semnalizare de urmărire. Pentru a adăuga semnalizarea de urmărire 3608 ca un parametru de pornire SQL Server, urmaţi aceşti paşi:
  1. În SQL Server Enterprise Manager, faceţi clic cu butonul din dreapta pe numele serverului, apoi faceţi clic pe Properties.
  2. În fila General, faceţi clic pe Startup Parameters.
  3. Adăugaţi următorul parametru nou:
    -c -m -T3608
Dacă utilizaţi SQL Server 2005, aveţi posibilitatea să utilizaţi SQL Server Configuration Manager pentru a modifica parametrii de pornire ai serviciului SQL Server. Pentru mai multe informaţii despre cum se modifică parametrii de pornire, vizitaţi următorul site Web MSDN (Microsoft Developer Network):După ce adăugaţi opţiunea -c, opţiunea -m şi semnalizarea de urmărire 3608, urmaţi aceşti paşi:
  1. Opriţi, apoi reporniţi SQL Server.
  2. Detaşaţi baza de date model utilizând următoarele comenzi:
    use master   go   sp_detach_db 'model'   go
  3. Mutaţi fişierele Model.mdf şi Modellog.ldf din folderul D:\Mssql7\Data în folderul E:\Sqldata.
  4. Reataşaţi baza de date model utilizând următoarele comenzi:
    use master   go   sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'   go
  5. Eliminaţi -c -m -T3608 din parametrii de pornire din SQL Server Enterprise Manager sau SQL Server Configuration Manager.
  6. Opriţi, apoi reporniţi SQL Server. Verificaţi modificarea locaţiilor fişierelor utilizând procedura stocată sp_helpfile. De exemplu, utilizaţi următoarea comandă:
    use model   go   sp_helpfile   go

Mutarea bazei de date MSDB

SQL Server 7.0

Notă Dacă utilizaţi această procedură când mutaţi baze de date msdb şi model, trebuie să reataşaţi mai întâi baza de date model, apoi baza de date msdb. Urmaţi aceşti paşi:
  1. Asiguraţi-vă că SQL Server Agent nu este în curs de execuţie.
  2. Urmaţi aceeaşi procedură de mutare a bazelor de date de utilizator.
Notă Dacă SQL Server Agent este în curs de execuţie, procedura stocată sp_detach_db nu va reuşi şi veţi primi următorul mesaj:
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the database 'msdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SQL Server 2005 şi SQL Server 2000

Pentru a muta baza de date MSDB, trebuie să porniţi SQL Server cu opţiunea -c, opţiunea -m şi semnalizarea de urmărire 3608. Semnalizarea de urmărire 3608 împiedică SQL Server să recupereze orice bază de date, cu excepţia bazei de date master. Pentru a adăuga opţiunea -c, opţiunea -m şi semnalizarea de urmărire 3608, urmaţi paşii din secţiunea „Mutarea bazei de date model”. După adăugarea opţiunii -c, a opţiunii -m şi a semnalizării de urmărire 3608, urmaţi aceşti paşi:
  1. Opriţi, apoi reporniţi SQL Server.
  2. Asiguraţi-vă că serviciul SQL Server Agent nu este în curs de execuţie.
  3. Detaşaţi baza de date msdb după cum urmează:
    use mastergosp_detach_db 'msdb'go
  4. Mutaţi fişierele Msdbdata.mdf şi Msdblog.ldf din locaţia curentă (D:\Mssql8\Data) în noua locaţie (E:\Mssql8\Data).
  5. Eliminaţi -c -m -T3608 din caseta cu parametri de pornire în Enterprise Manager.
  6. Opriţi, apoi reporniţi SQL Server.

    Notă Dacă încercaţi să reataşaţi baza de date msdb pornind SQL Server cu opţiunea -c, opţiunea -m şi semnalizarea de urmărire 3608, este posibil să primiţi următorul mesaj de eroare:
    Server: Msg 615, Level 21, State 1, Line 1
    Could not find database table ID 3, name 'model'.
  7. Reataşaţi baza de date msdb după cum urmează:
    use mastergo sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' go
Notă Dacă utilizaţi această procedură la mutarea bazei de date model, încercaţi să detaşaţi baza de date msdb în timp ce detaşaţi baza de date model. Când procedaţi astfel, trebuie să reataşaţi mai întâi baza de date model, apoi baza de date msdb. Dacă reataşaţi mai întâi baza de date msdb, primiţi următorul mesaj de eroare când încercaţi să reataşaţi baza de date model:
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
În acest caz, trebuie să detaşaţi baza de date msdb, să reataşaţi baza de date model, apoi să reataşaţi baza de date msdb.

După ce mutaţi baza de date msdb, este posibil să primiţi următorul mesaj de eroare:
Error 229: EXECUTE permission denied on object 'NumeObiect', database 'master', owner 'dbo'.
Această problemă apare deoarece lanţul de proprietate a fost rupt. Proprietarul bazei de date msdb şi al bazei de date master nu este acelaşi. În acest caz, proprietatea asupra bazei de date msdb a fost modificată. Pentru a soluţiona această problemă, executaţi următoarele instrucţiuni Transact-SQL. Pentru aceasta, utilizaţi utilitarul de linie de comandă Osql.exe (SQL Server 7.0 şi SQL Server 2000) sau utilitarul de linie de comandă Sqlcmd.exe (SQL Server 2005):
USE MSDB Go EXEC sp_changedbowner 'sa' Go
Pentru mai multe informaţii, faceţi clic pe următorul număr de articol pentru a-l vedea în Baza de cunoştinţe Microsoft:
272424 Verificarea lanţului de proprietate a obiectului în baze de date depinde de conectarea mapată la proprietarii obiectului (articolul poate să fie în limba engleză)

Mutarea bazei de date master

  1. Modificaţi calea fişierelor de date master şi a fişierelor jurnal master în SQL Server Enterprise Manager.

    Notă De asemenea, aici se poate modifica şi locaţia jurnalului de erori.
  2. Faceţi clic cu butonul din dreapta pe SQL Server din Enterprise Manager, apoi faceţi clic pe Properties.
  3. Faceţi clic pe Startup Parameters pentru a vedea următoarele intrări:
    -dD:\MSSQL7\data\master.mdf -eD:\MSSQL7\log\ErrorLog -lD:\MSSQL7\data\mastlog.ldf
    -d este calea completă a fişierului de date al bazei de date master.

    -e este calea completă a fişierului jurnal de erori.

    -l este calea completă a fişierului jurnal al bazei de date master.
  4. Modificaţi aceste valori după cum urmează:
    1. Eliminaţi intrările curente pentru fişierele Master.mdf şi Mastlog.ldf.
    2. Adăugaţi intrări noi specificând noua locaţie:
      -dE:\SQLDATA\master.mdf      -lE:\SQLDATA\mastlog.ldf
  5. Opriţi SQL Server.
  6. Copiaţi fişierele Master.mdf şi Mastlog.ldf în noua locaţie (E:\Sqldata).
  7. Reporniţi SQL Server.
Notă Dacă utilizaţi SQL Server 2005, utilizaţi SQL Server Configuration Manager pentru a schimba calea pentru fişierele de date master şi fişierele jurnal master.

Mutarea bazei de date tempdb

Aveţi posibilitatea să mutaţi fişiere tempdb utilizând instrucţiunea ALTER DATABASE.
  1. Determinaţi numele de fişier logice pentru baza de date tempdb utilizând sp_helpfile ca mai jos:
    use tempdbgosp_helpfilego
    Numele logic pentru fiecare fişier este conţinut în coloana name. Acest exemplu utilizează numele de fişier implicite pentru tempdev şi templog.
  2. Utilizaţi instrucţiunea ALTER DATABASE, specificând numele de fişier logic, după cum urmează:
    use mastergoAlter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')goAlter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')go
    Ar trebui să primiţi următoarele mesaje care confirmă modificarea:
    Mesajul 1
    File 'tempdev' modified in sysaltfiles. Delete old file after restarting SQL Server.
    Mesajul 2
    File 'templog' modified in sysaltfiles. Delete old file after restarting SQL Server.
  3. Utilizarea procedurii sp_helpfile în tempdb nu va confirma aceste modificări până când reporniţi SQL Server.
  4. Opriţi, apoi reporniţi SQL Server.

Mutarea bazei de date master şi a bazei de date Resource

Pentru mai multe informaţii despre mutarea bazei de date master şi a bazei de date Resource, vizitaţi următorul site Web MSDN (Microsoft Developer Network):
REFERINŢE
Pentru informaţii suplimentare, faceţi clic pe următoarele numere de articole pentru a le vizualiza în Baza de cunoştinţe Microsoft:
912397 Serviciul SQL Server nu poate porni când modificaţi un parametru de pornire pentru o instanţă dintr-un cluster SQL Server 2000 sau SQL Server 2005 la o valoare nevalidă (articolul poate să fie în limba engleză)
274188 Subiectul „Troubleshooting orphaned users” din documentaţia online este incomplet (articolul poate să fie în limba engleză)
246133 Cum se transferă informaţiile de conectare şi parolele între instanţe de SQL Server (articolul poate să fie în limba engleză)
168001 Informaţiile de conectare şi permisiunile utilizatorilor dintr-o bază de date pot fi incorecte după restaurarea bazei de date (articolul poate să fie în limba engleză)

Pentru mai multe informaţii consultaţi următoarele manuale:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001
Moving database files new location move place
Proprietăți

ID articol: 224071 - Ultima examinare: 02/15/2011 19:51:00 - Revizie: 15.2

  • kbsqlmanagementtools kbinfo KB224071
Feedback