Welcome to Sign in | Join | Help
in Search

SQL inclus in kit-ul de instalare al aplicatiei

Last post 02-20-2009, 11:14 AM by Nou. 9 replies.
Sort Posts: Previous Next
  •  11-26-2008, 11:18 AM 6265

    SQL inclus in kit-ul de instalare al aplicatiei

    Salutare,
    Am facut o aplicatie in C# care foloseste o BD in SQLExpress 2005 si acum vreau sa fac un kit de instalare pt ea.

    - am ceat kit-ul in care am inclus ".mdf-ul", ".ldf-ul" si SQLExpress.
    - se instaleaza aplicatia si SQL-ul dar baza de date nu este atasata in server.

    Problema :
    - cum pot rula un script ".sql", de atasate a unei BD la un server (generat in SQL) in timpul instalarii aplicatiei (sau macar dintr-o aplicatie C#)?
    - cum pot afla numele serverelor existente (de pe pc-ul local sau retea)?

    Am gasit cate ceva pe net, dar sunt incepator si nu am inteles exact.

    Multumesc.
       

  •  11-26-2008, 11:28 AM 6266 in reply to 6265

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    Poţi executa un script .SQL folosind utilitarul SQLCMD.EXE, care e instalat odată cu SQL Express. De exemplu:

    SQLCMD -S numeserver -U numeutilizator -P parola  -i script.sql

    Poţi afla server-ele disponibile din reţea tot folosind SQLCMD, astfel:

    SQLCMD -L

    Pentru mai multe detalii, vezi:
    http://msdn.microsoft.com/en-us/library/ms162773.aspx

    Răzvan
  •  11-26-2008, 11:32 AM 6267 in reply to 6265

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    1. ldf-ul nu trebuie inclus in aplicatie
    2. Ai VS Express sau altceva ? In functie de asta iti raspund la intrebare legat de rularea scriptului sql ( de ex., vezi aici :http://msdn.microsoft.com/en-us/library/49b92ztk.aspx)
    3. Ca sa afli numele serverelor inregistrare, ar trebui sa te folosesti smo
    http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.registeredservers.aspx
    4. esti sigur ca exista cel putin o instanta  de SQl Server ?

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  11-26-2008, 11:35 AM 6268 in reply to 6266

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    rsocol:
    Poţi executa un script .SQL folosind utilitarul SQLCMD.EXE, care e instalat odată cu SQL Express. De exemplu:

    SQLCMD -S numeserver -U numeutilizator -P parola  -i script.sql

    Razvan - sqlcmd vine cu instanta de server sau doar cu driver-ele ?( adica, daca aplicatia se instaleaza pe  o masina si server-ul e pe alta...)

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  11-26-2008, 11:44 AM 6269 in reply to 6268

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    SQLCMD vine cu instanţa de server, dar se poate instala separat şi pe o altă maşină, folosind SQLServer2005_SQLCMD.msi de la:
    http://www.microsoft.com/downloads/details.aspx?familyid=d09c1d60-a13c-4479-9b91-9e8b9d835cdc&displaylang=en

    Răzvan
  •  11-26-2008, 11:50 AM 6270 in reply to 6267

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    ignatandrei:

    1. ldf-ul nu trebuie inclus in aplicatie


    LDF-ul poate fi omis doar în anumite condiţii, dacă s-a făcut un CHECKPOINT înainte de dettach-ul MDF-ului. Altfel există riscul pierderii de date. Vezi comentariile lui Remus din thread-ul: http://sqlserver.ro/forums/thread/1529.aspx

    Aşa cum scria şi Remus în thread-ul de mai sus, ar fi mai simplu să se distribuie un backup în loc de MDF şi LDF.

    Răzvan
  •  11-26-2008, 12:09 PM 6271 in reply to 6265

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    Nou:

    - cum pot rula un script ".sql", de atasate a unei BD la un server (generat in SQL) in timpul instalarii aplicatiei (sau macar dintr-o aplicatie C#)?

     



    In principiu potzi sa incluzi fisierul .sql in kit (ca resursa in exe sau ca fisier extern copiat in distributie) si sa executi fiecare batch din el cu un SqlCommand.ExecuteNonQuery. Ca sa imparti .sql in batch-uri poti folosi String.Split(new string[] { "go\r\n", "GO\r\n" }, StringSplitOptions.RemoveEmptyEntries). Pentru premianti se poate folosi un RegEx cu math-uri. 99% din cazuri esti acoperit. Evident, daca ai folosit alt batch delimiter in locul lui 'GO', split-uiesti dupa acel delimiter. Daca ai folosit extensii de executie in .sql de genul :connect, atunci trebuie sa-l executi cu sqlcmd.
    Oarecum pe linga topic, dar ca sa executi ceva la instalare itzi creezi o clasa derivata din System.Configuration.Install.Installer si o decorezi cu [RunInstaller(true)]. Adaugi un eveniment AfterInstall si in el itzi rulezi codul tau C# de instalare.

    http://rusanu.com
  •  11-26-2008, 2:42 PM 6272 in reply to 6271

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    Da nu merge custom action SQL? Trebuie sa ma uit in Visual, cu third party installation tools se poate cu siguranta executia de SQL.
  •  11-27-2008, 11:06 AM 6278 in reply to 6272

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    Multumesc pentru raspunsuri.

    Ma documentez din link-urile trimise si sper sa reusesc.

  •  02-20-2009, 11:14 AM 6799 in reply to 6278

    Re: SQL inclus in kit-ul de instalare al aplicatiei

    Am facut kit-ul dar cred ca nu este solutia cea mai buna

    Folosesc la instalare 2 aplicatii (C#) : prima este un executabil a 2-a este kitul de instalare al aplicatiei:

    instalarea se incepe prin executia primei aplicatii :

    1 - instaleaza o instanta SQL Express 2005 cu parametrii dati de mine

    2 - da in executie kit-ul de instalare al aplicatiei (cea de-a 2-a aplicatie, care in procesul de instalare copie .mdf-ul si .ldf-ul in locatia aleasa. kit-ul incluzand cele 2 fisiere)

    3 - dupa ce se termina instalarea, la revenirea in prima aplicatie setez drepturi full pe cele 2 fisiere (ale BD) scrise de kit-ul de instalare*

    La pornirea aplicatiei verific daca BD este atasata si daca nu o atasez 

    Inconveniente :

    - este o procedura greoaie si necesita o verificare la pornira aplicatiei daca BD este atasata sau nu

    - folosesc 2 aplicatii la instalare

    - si cel mai important (pt asta am facut pasul 3 din prima aplicatie *)

          - kit-ul copie cele 2 fisiere ale BD in locatia aleasa dar (fctie de drepturile user-ului) nu au drepturi depline si la atasare baza de date este ReadOnly.

     

     

     

     

View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems