Avatar billede hugopedersen Nybegynder
26. maj 2004 - 14:39 Der er 18 kommentarer og
2 løsninger

Distribuering af databaseændringer

Når nu man har x antal filer med ændringer til en SQL base der ligger et sted hvor man ikke lige kan få fysisk adgang uden at skulle køre et længere stykke vej, hvordan distribuerer man så lige disse?

For mig ville det optimale være en app der-
1.  Man vælger server, database og bruger/password
2.  App læser .SQL filerne 1 efter 1 og så applyer dem.

Men findes sådan noget allerede ?

Der er et værktøj med Flarepath Windows Update Analyzer der virker lidt på denne måde, men det er 'properitært' og virker kun til FWUA

Andre metoder er selvfølgelig også interessante, men som minimum 'kræver' jeg at det er de små .SQL filer jeg genererer når der ændres i min udviklings db.
Avatar billede yellow Nybegynder
26. maj 2004 - 14:44 #1
Det kan du da med "Query Analyser", der følger med MS SQL...eller har jeg misforstået spørgsmålet?
Avatar billede hugopedersen Nybegynder
26. maj 2004 - 14:47 #2
Det kan man ja, men.....

Jeg vil gerne kunne lave en eller anden installations CD som jeg kan sende ud til hr. x som så installerer den og kører applikationen der så opdaterer db'en.
Det betyder at man ikke behøver at vide ret meget om SQL server og Query Analyzer m.m. for at opdatere sin db til nyeste release.
Avatar billede yellow Nybegynder
26. maj 2004 - 15:35 #3
Blev lige optaget af en anden opgave, så fik ikke tid til at se nærmere på det.

En idé kunne være at lave en batchfil og så benytte de commandprompt utilities der følger med MS SQL. Se evt. på "isql" og "osql" utilities - de kan tage queryfiler som input.

Resultatet ville være en .cmd fil som hr. x skulle klikke på og specificere et password.
Avatar billede trer Nybegynder
26. maj 2004 - 15:36 #4
Hvorfor laver du ikke en HTA eller VBS fil som blot indlæser din sql-fil som en tekststream og fyrer de statements af der ligger i den?
Avatar billede trer Nybegynder
26. maj 2004 - 15:37 #5
hmm.. så lige yellows ide. Det er nok nemmere end at lave hta/vbs filen - mindre kodning :-)
Avatar billede hugopedersen Nybegynder
27. maj 2004 - 06:57 #6
yellow>  det kunne godt være en løsning, men jeg er nødt til at antage at hr. x sandsynligvis ikke har installeret nogen af de nævnte utilities på sin arbejdsstation og at han ikke har direkte fysisk adgang til SQL serveren. Så skal jeg i hvert fald kunne pakke dem med ned i min distribution, og det er jo ikke sikkert at Bill synes om det :-)
Avatar billede yellow Nybegynder
27. maj 2004 - 10:36 #7
Hmm, ved nu ikke om det ville være brud af licencen med at benytte de command utilities til distribution til en licenceret server.

En anden mulighed var at investere i InstallShield og så benytte nogle plugins til SQL Server maintencance ( som gør meget det samme som isql og osql ). Men InstallShield koster jo penge ><

Du kunne selvfølgelig også prøve med trers forslag med at lave et lille vbs program og så manuelt opdatere gennem en ODBC.

Jeg legede lidt med det og fandt frem til følgende:

'****Update.vbs****
Dim connectionString,cnn,password
password = InputBox("Angiv password til databasen","Password","", 100, 100)
connectionString  = "DRIVER={SQL Server};SERVER=MyServer;UID=myUser;PWD=" & password & ";DATABASE=myDatabase;"
Set cnn = CreateObject("ADODB.Connection")
cnn.Open connectionString
 
Dim fso, folder, filelist,file,textStream
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("./UpdateFiles/")
Set filelist = folder.Files
For Each file in filelist
  Set textStream = file.OpenAsTextStream(1,-2)
  cnn.Execute textStream.ReadAll
  textStream.Close
  Set textStream = nothing 
Next

cnn.Close
Set cnn = Nothing
'********
Den Ser i mappen "UpdateFiles" og kører alle filerne igennem.
Jeg testede den med en Alter Stored procedure .sql fil lavet fra Query Analyser.
Den kunne ikke helt døje:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Men det virkede fint hvis jeg fjernede GO og SET linier så filen kun indeholdt selve Alter proceduren:
ALTER  PROCEDURE...
...
END

Du kan selvfølgelig justere vbs programmet til så den kommer med lidt pænere fejl-output (eks. ved forkert password) og har nogle flere checks og alt det gejl der ;-)
Avatar billede trer Nybegynder
27. maj 2004 - 12:17 #8
Du kan ikke installere en SQL Server uanset version uden at få OSQL med - det er kommandolinje-udgaven af ISQL.
Avatar billede hugopedersen Nybegynder
27. maj 2004 - 12:30 #9
trer> jeg er helt klar over det, men det bliver jo ikke installeret på klienterne.  Og hele humlen i det er at jeg skal kunne lave disse opdateringer uden anden forbindelse til SQL serveren end 'min' opdaterings-applikation
Avatar billede trer Nybegynder
27. maj 2004 - 13:07 #10
Ok, så er jeg med.

Så er det nok Yellows script ovenfor du skal anvende.  Hvis du laver det som en .HTA fil (=> HTML Applikation - en alm. html-side med clientside vb script og gemt med extension .HTA) har du en nem redigerbar applikation som ikke kræver det store at vedligeholde og distribuere - og som ikke kræver installation!

Du kan evt. kalde den direkte fra en AUTORUN.INF på en CD...
Avatar billede hugopedersen Nybegynder
27. maj 2004 - 13:31 #11
trer>jeg er også ved at være der henne at man måske skal lave det i noget script og så distribuere det som trer foreslår på en CD - ulempen ved det er dog at jeg skal lave en for hver kunde med server/database/bruger/password hardcodet. Men det er selvfølgelig en detalje.

yellow> hvilken version af Installshield skal man bruge for at kunne lave det trick? Jeg har tidligere fået tilsendt et par demoversioner af dette værktøj, så det kunne da være interessant at prøve.
Avatar billede yellow Nybegynder
27. maj 2004 - 13:52 #12
Jeg læste om det her http://www.installsite.org/pages/en/isp_db.htm
(scroll ned til punktet SQL Server Database Maintenance).

Der står det er testet med InstallShield Developer 8
Avatar billede hugopedersen Nybegynder
27. maj 2004 - 14:04 #13
Det er selvfølgelig lige en af dem jeg ikke fik en demo på :-)
Avatar billede yellow Nybegynder
27. maj 2004 - 14:08 #14
"ulempen ved det er dog at jeg skal lave en for hver kunde med server/database/bruger/password hardcodet."
Behøver jo ikke nødvendigvis være hardcoded. Du kan vel bare prompte brugeren for de 3 informationer? Eller lave en generel .ini fil til hver af dine kunder.
Avatar billede trer Nybegynder
27. maj 2004 - 15:05 #15
Benytter du en HTA kan du netop lave en simpel input form hvor du kan lade brugeren indtaste brugernavn, password og server navn mv... så er der ikke noget hardcoded...
Avatar billede hugopedersen Nybegynder
01. juni 2004 - 10:27 #16
Kunne jeg ikke få et par svar fra de herrer, så kan i deles om gevinsten.

Installshield X  skulle kunne gøre det - er ikke testet endnu.
Avatar billede trer Nybegynder
01. juni 2004 - 10:56 #17
Ok, et svar herfra.
Avatar billede hugopedersen Nybegynder
01. juni 2004 - 11:17 #18
Næh - det var en kommentar :-)
Avatar billede yellow Nybegynder
01. juni 2004 - 20:07 #19
tak
Avatar billede trer Nybegynder
01. juni 2004 - 21:40 #20
Heh... ok, så prøver jeg igen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester