Welcome to Sign in | Help

Atasarea unei baze de date

  •  10-09-2006, 12:15 PM

    Atasarea unei baze de date

                          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)
    Filed under:
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems