26. maj 2004 - 14:39Der 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.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.
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.
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 :-)
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 ;-)
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
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...
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.
"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.
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...
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.