Welcome to Sign in | Help
in Search

Restore Database from Developer to Express

Last post 10-02-2007, 6:09 PM by MrSmersh. 9 replies.
Sort Posts: Previous Next
  •  09-30-2007, 8:43 PM 2803

    Restore Database from Developer to Express

    Am citeva curiozitati...
    Situatie am un SQL 2005 la care tot fac backup full pe disk (in aceeasi fisier). Am dat restore (din prompt Visual 2005 comanda SQL Restore Database ... with replace ) la backup ala pe un SQLExpress din Visual, m-am trezit doar cu datele din primul backup... De ce ? Si cum as fi trebuit sa fac sa am versiunea curenta dupa restore? Backup e ok ca l-am mai folosit dar din Management Studio cu rezultatele dorite.
    2 am facut un backup intr-un fisier nou, asta la restore dadea timeout. In Visual nu am gasit repede unde sa pun statement timeout (fara help si fara net) si mai simplu am facut un program la care am pus un command timeout baban... Si asa am rezolvat problema, si cred ca se putea si mai elegant. Cum puteam sa fac mai bine?
    De fapt in general cum as fi facut asta cel mai bine, idea era sa pun o baza de date de pe o masina de productie la un dezvoltator pentru debug fast. Nu are local Management Studio si la conectare remote cam miriia si cred ca si din motivul ca e vorba de Vista (la developer)...

    Multumesc!

     

  •  09-30-2007, 10:46 PM 2804 in reply to 2803

    Re: Restore Database from Developer to Express

    Incearca putin sa reformulezi. Parca sunt un labirit afirmatiile tale.
  •  10-01-2007, 9:15 AM 2805 in reply to 2804

    Re: Restore Database from Developer to Express

    Da cam alambicata explicatia

    1.Masina cu SQL Server Developer Edition
    -fac backup  full la data X in fisier bac.bak
    -fac backup  full la data X+1 in fisier bac.bak
    -fac backup  full la data X+2 in fisier bac.bak

    2.Masina Vista cu SQL Express instalat cu Visual Studio
    -In promptul SQL din Servers din Visual dau "Restore Database xxx from disk =...bac.bak' with replace " . Obtin starea bazei de date la data X.Deci nu ultima care X+2... De ce?

    3.Masina cu SQL Server Developer Edition
    -fac backup  full la data X+2 in fisier nou nou.bak

    4.Masina Vista cu SQL Express instalat cu Visual Studio
    -In promptul SQL din Servers din Visual dau "Restore Database xxx from disk =...nou.bak' with replace " . Imi da statement timeout, in Visual am gasit usor cum se modifica connection timeout dar nu si asta (fara help si net).

    5.Masina Vista cu SQL Express instalat cu Visual Studio
    Fac un programel C# care executa comanda la care pot manipula usor timeout, care clar il dau baban. Si da acuma merge.

    Mentiuni
    Nu am reusit de pe masina cu SQL Developer Edition, cu Management Studio sa ma conectez la SQL Express (repede si usor desi am facut toti pasii), si pe Vista nu era instalat Management Studio...

    Intrebari
    De ce am capatat backup la data X?
    Si daca puteam  face mai elegant tot?
    Si conectarea remote la SQL pus pe Vista are cumva ceva pasi in plus fata de "normal"?

  •  10-01-2007, 1:59 PM 2813 in reply to 2805

    Re: Restore Database from Developer to Express

    Raspuns: un fisier de bkp / bak poate stoca mai multe copii de siguranta / backup-uri denumite si backup set. Mai mult chiar, in acelasi fisier pot fi memorate backup set-uri de la mai multe baze de date. In mod implicit , comportamentul SQL Server in cazului realizarii unui backup este de cel append (adaugare) si nu de overwrite (suprascriere). La momentul restaurarii bazei de date (folosinf RESTORE DATABASE) SQL Server va lua in considerare doar primul backup set din fisier. Daca doresti ca pentru restaurarea bazei de date sa se utilizeze alt backup set din acelasi fisier folosesti clauza RESTORE ... WITH FILE = pozitie backup set. De asemenea poti folosi fisiere separate pentru fiecare operatiune de backup.

    Exemplificare (executa linie cu linie fiecare comanda restore si select pentru a vedea efectele clauzei WITH FILE = nr/pozitie backup set):

    CREATE DATABASE TestBkp
    CREATE TABLE Factura (CodFactura INT PRIMARY KEY, Serie VARCHAR(25), Nr INT, Data DATETIME)

    INSERT INTO Factura VALUES (1, 'BAAA' , 1000 , '2007-01-01' )
    INSERT INTO Factura VALUES (2, 'BAAA' , 1001 , '2007-02-02' )
    INSERT INTO Factura VALUES (3, 'BAAA' , 1002 , '2007-03-03' )
    BACKUP DATABASE TestBkp TO DISK = 'C:\CopieSigurantaBD.bkp'
    --full bkp 1

    INSERT INTO Factura VALUES (4, 'BAAB' , 1000 , '2007-04-01' )
    BACKUP DATABASE TestBkp TO DISK = 'C:\CopieSigurantaBD.bkp'
    --full bkp 2 --

    INSERT INTO Factura VALUES (5, 'BAAC' , 1000 , '2007-05-01' )
    BACKUP DATABASE TestBkp TO DISK = 'C:\CopieSigurantaBD.bkp'
    --full bkp 3

    BACKUP DATABASE test TO DISK = 'C:\CopieSigurantaBD.bkp'
    --full bkp la o alta baza de date; in acest moment in 'C:\CopieSigurantaBD.bkp' vor exista 4 backup set-uri: 3 de la TestBkp si 1 de la test

    --in continurea poti vedea care sunt backup set-urile dintr-un fisier (ex.'C:\CopieSigurantaBD.bkp') pentru o anumita baze de date (ex. TestBkp)
    SELECT BS.position PozitieBackupInFisierBkp, BS.database_name BazaDate, BS.*
    FROM msdb.dbo.backupmediafamily BMF
        INNER JOIN msdb.dbo.backupmediaset BMS ON BMF.media_set_id = BMS.media_set_id
        INNER JOIN msdb.dbo.backupset BS ON BMS.media_set_id = BS.media_set_id
    WHERE BMF.physical_device_name = 'C:\CopieSigurantaBD.bkp'
        AND BS.database_name = 'TestBkp'
    ORDER BY BS.position

    --poti vizualiza continutul unui astfel de backup set (1 este nr/pozitia backup set-ului in fisier)
    RESTORE FILELISTONLY FROM DISK = 'C:\CopieSigurantaBD.bkp' WITH FILE = 1

    --DE AICI EXECUTI FIECARE RESTORE SEPARAT/DISTINCT PENTRU A OBSERVA CONSECINTELE FIECAREI COMENZI RESTORE

    USE master
    RESTORE DATABASE TestBkp FROM DISK = 'C:\CopieSigurantaBD.bkp' WITH REPLACE
    SELECT * FROM TestBkp.dbo.Factura

    RESTORE DATABASE TestBkp FROM DISK = 'C:\CopieSigurantaBD.bkp' WITH REPLACE, FILE=1
    SELECT * FROM TestBkp.dbo.Factura

    RESTORE DATABASE TestBkp FROM DISK = 'C:\CopieSigurantaBD.bkp' WITH REPLACE, FILE=2
    SELECT * FROM TestBkp.dbo.Factura

    RESTORE DATABASE TestBkp FROM DISK = 'C:\CopieSigurantaBD.bkp' WITH REPLACE, FILE=3
    SELECT * FROM TestBkp.dbo.Factura

  •  10-01-2007, 5:37 PM 2820 in reply to 2813

    Re: Restore Database from Developer to Express

    clar FILE= era smecheria la intrebarea 1... Fara help de bucata asta din sintaxa lui restore nu mi-am adus aminte (admitind ca as fi stiutu vreodata)
  •  10-01-2007, 8:05 PM 2821 in reply to 2820

    Re: Restore Database from Developer to Express

    BOOKS ONLINE gasesti aici: http://msdn2.microsoft.com/en-us/library/ms189826.aspx

    O varianta condensata de help gasesti aici: http://devguru.com/technologies/t-sql/
     

  •  10-02-2007, 11:58 AM 2823 in reply to 2821

    Re: Restore Database from Developer to Express

    E nici chiar asa Smile exista MSDN exista TechNet(care cred ca are books si), la viteza nu am gasit pe calculator ala ce si cum. Ca sintaxa exacta de restore am vazut ca e 2 pagini. Si in plus eu lucrind in mai multe dialecte SQL e cam varza cind ma pun sa scriu ceva in prompt.

    DAR se pare ca by default Restore Database din menu Mangement console face restorul complet, nu te intreaba pe niciunde de file, da poti sa vezi ce e in backup dar by default nica te intreaba ce FILE vrei  Si comanda SQL ar putea si ea by default sa mearga asa.

    Si mai ramine si problema statement  timeout si daca la instante pe Vista mai trebuie pasi splimentari ca se te conectezi remote

  •  10-02-2007, 12:16 PM 2824 in reply to 2823

    Re: Restore Database from Developer to Express

  •  10-02-2007, 12:27 PM 2825 in reply to 2823

    Re: Restore Database from Developer to Express

    MrSmersh:

    ...

    DAR se pare ca by default Restore Database din menu Mangement console face restorul complet, nu te intreaba pe niciunde de file, da poti sa vezi ce e in backup dar by default nica te intreaba ce FILE vrei  Si comanda SQL ar putea si ea by default sa mearga asa.

    ...

     

  •  10-02-2007, 6:09 PM 2837 in reply to 2825

    Re: Restore Database from Developer to Express

    Eu cred ca pe pilot automat daca dai click si click, adica default, merge fara sa alegi ceva explicit.
    Eu vorbesc de SQL Server Express din Visual, care nu stiu exact ce versiune e cu SP sau nu.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems