claudiu3001:Fisierul contine o partitie a unei tabele partitionate. Se presupune ca fisierul contine date vechi, filegroup-ul fiind read only.
Daca e un filegroup separat si read-only poti face la modul urmator:
1) copieaza fiesierul in noua locatie
2) ruleaza ALTER DATABASE dbname MODIFY FILE (name=numelogic, filename='nouacale'). Asta va schimba informatia unde este NDF-ul pe disc, dar doar in catalog, baza de date va ramine online si neschimbata.
3) ALTER DATABASE dbname MODIFY FILE (name=numelogic, OFFLINE);. Asta va pune filegroup-ul offline, dar restul bazei de date va ramine online.
4) RESTORE DATABASE dbname FILEGROUP='numefilegroup' WITH RECOVERY; Asta i-tzi va pune filegroup-ul innapoi online.
5) sterge vechiul fisier.
Baza de date nu va fi offline, dar la pasul 4 va avea nevoie de access exclusiv pentru un foarte scurt moemnt, in care toti ceilalti user trebuie deconectati de la baza de date. Intre pasul 3 si 4 partitia care e pe acel filegroup offline nu va putea fi accesata. Asta e o metoda relativ simpla cu timp mic de downtime.
Daca vrei absolut 0 downtime e mai complicat:
1) creaza un nou filegroup pe noul disc.
2) creaza in noul filegroup o tabela absolut identica ca structura cu tabela veche (inclusiv indecsi, si check constraints)
3) copiaza datele din partitia veche a tabelei in tabela de pe noul filegroup
4) Fa ALTER TABLE ... SWITCH PARTITION ca sa faci 'switch' intre partitia veche si tabela din noul filegroup, care devine astfel parte a tabelei original.
5) Fa drop la filegroup-ul vechi.
Methoda asta e mai complicata si depinde de cum ai facut alinierea indecsilor. Daca ai incurcat indecsii, nu o sa poti face pasul 4) de switch, contacteza un specialist ca sa te ajute.
http://rusanu.com