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

Traduceri articole Traduceri articole
ID articol: 224071
Măriți totul | Reduceți totul

În această pagină

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):
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

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>
    go
    sp_helpfile
    go
  • 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):
http://msdn2.microsoft.com/en-us/library/ms189128.aspx

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):
http://msdn2.microsoft.com/en-us/library/ms190737.aspx
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 master
    go
    sp_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 master
    go 
    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 tempdb
    go
    sp_helpfile
    go
    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 master
    go
    Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
    go
    Alter 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):
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

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
MCSE Training Kit: Microsoft SQL Server 2000 System Administration
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001

Proprietă?i

ID articol: 224071 - Ultima examinare: 15 februarie 2011 - Revizie: 15.2
Cuvinte cheie: 
kbsqlmanagementtools kbinfo KB224071

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com