Atasarea unei baze de date
Atasarea (cu operatia complementara “detasarea”) unei baze de date este o procedura folosita , asa cum ii spune denumirea , pentru inserarea pe server a unei baze de date SQL Server provenita de pe alt sistem.
Detasarea, sau mai degraba pregatirea unei baze de date pentru atasare pe alt server se poate face in 2 feluri :
· -prin interfata, in Management Studio, right-click pe baza de date -> Tasks->Detach…
· Se opreste serviciul SQL Server si se copiaza fisierele de date si log in locatia dorita dupa care se reporneste serviciul.
Operatia inversa , atasarea se poate face tot in 2 feluri astfel:
· Prin interfata , similar;
· Prin lansarea comenzii “CREATE DATABASE …” de undeva dintr-un script , folosind optiunile FOR ATTACH sau FOR ATTACH_REBUILD_LOG
Sa incercam sa studiem problema atasarii unei baze de date in situatia in care ne lipsesc fisierele de log. Aceasta problema reala , a evitarii atasarii logului unei baze de date de productie care a atins dimensiuni mari si-o poate pune echipa de dezvoltare cand vrea sa aiba la dispozitie o baza de date cu date la zi.
Construim o baza de date “chioara” test1 prin interfata, cu un singur fisier de log; o detasam rapid si modificam numele fisierului din “test1_log.ldf” in “test1_log_1.ldf” simuland situatia in care acesta lipseste. Lansam comanda cu optiunea “FOR ATTACH
create database test1 on (name =test1, filename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1.mdf') for attach
Sistemul recreaza fisierul de log iar mesajul corespunzator este urmatorul:
"File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1_log.ldf" may be incorrect.
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1_log.LDF' was created."
Mai departe adaugam un fisier de log la schema bazei de date si reluam operatia de mai sus simuland pierderea celor 2 fisiere de log. Mesajul care a rezultat este urmatorul :
"File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1_log.ldf" may be incorrect.
File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test2_log.ldf" may be incorrect.
The log was not rebuilt because there is more than one log file.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'test1'. CREATE DATABASE is aborted."
…iar baza de date “test1” nu a fost atasata.
Avem sperante ca optiunea cealalta ne va rezolva problema:
Asa e, jocul nostru cu un singur fisier de log decurge ca mai sus insa pentru partida in care evoluam cu 2 loguri mesajul este urmatorul :
File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1_log.ldf" may be incorrect.
File activation failure. The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test12_log.ldf" may be incorrect.
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1_log.LDF' was created.
Serverul ataseaza baza de date insa creeaza numai un fisier de log si anume 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test1_log.LDF' . Asta face necesara realizarea unui backup full imediat al bazei de date deoarece avem o alta schema.
In concluzie, pentru o baza de date , optiunea de atasare/detasare este o solutie buna luat in calcul, cu atentie, asa cum am mentionat mai sus , pentru mutarea din productie la dezvoltare.
Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)