Hey,
Ik heb me een tijd geleden eens aan ASP.NET gewaagd om een paar websites te maken. Nu gebruik ik daar een Access database voor (SQL moet ik extra voor betalen op m'n webhost) die gewoon als fysiek bestand in de App_Data map staat (ik geloof dat dat verder correct is?).
Het werkt allemaal prima, een probleem is alleen dat is soms de database moet updaten. Hierbij denk ik aan twee gevallen:
- Bestaande velden in de database wijzigen,
- Tabellen wijzigen / nieuwe tabellen toevoegen.
In een van m'n eerdere websites bijvoorbeeld was iemand zijn wachtwoord vergeten. Ik hash de wachtwoorden voordat ik ze in de database opsla, dus ik kon hem niet vertellen wat zijn wachtwoord was. In plaats daarvan had ik maar even voor hem een nieuw wachtwoord verzonnen en dat handmatig in de database gezet, door de mdb file van m'n server te halen, te wijzigen, en daarna weer te uploaden. Dit kan makkelijk voorkomen worden door een pagina aan m'n website toe te voegen waar ik de wachtwoorden van iedereen kan wijzigen (natuurlijk enkel als de ingelogde gebruiker daar rechten voor heeft), maar omdat ik die pagina op dat moment niet had kon ik dus niet anders (denk ik...). Daarna heb ik voor elke website zo'n pagina gemaakt, maar ik kan me voorstellen dat er ooit iets vergelijkbaars optreed (waar ik nu nog niet aan denk) waardoor ik weer in de database moet gaan zitten rommelen.
Als ik iets nieuws aan m'n website toevoeg dan moet ik vaak ook tabellen aan de database toevoegen. Nu heb ik een kopie van de database in m'n ontwikkel omgeving, waar ik dan eerst de wijzigingen aan aanbreng om te testen. Als het allemaal werkt echter dan zal ik toch echt de database op de server moeten aanpassen. Ik kan natuurlijk niet mijn lokale database kopieren, aangezien daar niet de recente data in zit. Dus moet ik weer opnieuw de database van de server halen, dan tabellen gaan wijzigen en toevoegen (waarbij ik goed op moet letten dat ik precies dezelfde wijzigingen maak als in mijn ontwikkel omgeving anders werkt het natuurlijk niet), en de database daarna weer uploaden.
Dit downloaden, wijzigen, uploaden van de database kan natuurlijk voor problemen zorgen: als iemand iets op m'n site doet wat de database aanpast terwijl ik aan het wijzigen ben, dan gaat die wijziging dus verloren zodra ik mijn (nu oude) versie weer upload. Daarom gooi ik de site altijd plat terwijl ik zo'n database wijziging doe, maar dat is natuurlijk ook niet ideaal...
Lang verhaal kort: hoe vermijd ik dat ik de database moet downloaden, wijzigen en weer uploaden? Is er een betere manier om de database aan te passen? Ik bedenk bijvoorbeeld een pagina op m'n website die alleen voor mij te bereiken is (geen idee hoe ik dat voor elkaar krijg behalve met een wachtwoord) waar ik een willekeurige query op de database kan uitvoeren. Maar dat lijkt me ook niet echt veilig, handmatig queries intypen kan nog wel eens misgaan (je zou maar een 'where ID = ..' vergeten bij een update), en voor elke query de database backuppen is ook een beetje overdreven denk ik...
Er moet toch een betere manier zijn? Ik geloof dat MS SQL dit toch beter geregeld heeft, daarvoor kun je gewoon een script runnen dat de database tabellen kan wijzigen geloof ik? Bestaat er niet iets vergelijkbaars voor Access?
Enige suggesties?
Ik heb me een tijd geleden eens aan ASP.NET gewaagd om een paar websites te maken. Nu gebruik ik daar een Access database voor (SQL moet ik extra voor betalen op m'n webhost) die gewoon als fysiek bestand in de App_Data map staat (ik geloof dat dat verder correct is?).
Het werkt allemaal prima, een probleem is alleen dat is soms de database moet updaten. Hierbij denk ik aan twee gevallen:
- Bestaande velden in de database wijzigen,
- Tabellen wijzigen / nieuwe tabellen toevoegen.
In een van m'n eerdere websites bijvoorbeeld was iemand zijn wachtwoord vergeten. Ik hash de wachtwoorden voordat ik ze in de database opsla, dus ik kon hem niet vertellen wat zijn wachtwoord was. In plaats daarvan had ik maar even voor hem een nieuw wachtwoord verzonnen en dat handmatig in de database gezet, door de mdb file van m'n server te halen, te wijzigen, en daarna weer te uploaden. Dit kan makkelijk voorkomen worden door een pagina aan m'n website toe te voegen waar ik de wachtwoorden van iedereen kan wijzigen (natuurlijk enkel als de ingelogde gebruiker daar rechten voor heeft), maar omdat ik die pagina op dat moment niet had kon ik dus niet anders (denk ik...). Daarna heb ik voor elke website zo'n pagina gemaakt, maar ik kan me voorstellen dat er ooit iets vergelijkbaars optreed (waar ik nu nog niet aan denk) waardoor ik weer in de database moet gaan zitten rommelen.
Als ik iets nieuws aan m'n website toevoeg dan moet ik vaak ook tabellen aan de database toevoegen. Nu heb ik een kopie van de database in m'n ontwikkel omgeving, waar ik dan eerst de wijzigingen aan aanbreng om te testen. Als het allemaal werkt echter dan zal ik toch echt de database op de server moeten aanpassen. Ik kan natuurlijk niet mijn lokale database kopieren, aangezien daar niet de recente data in zit. Dus moet ik weer opnieuw de database van de server halen, dan tabellen gaan wijzigen en toevoegen (waarbij ik goed op moet letten dat ik precies dezelfde wijzigingen maak als in mijn ontwikkel omgeving anders werkt het natuurlijk niet), en de database daarna weer uploaden.
Dit downloaden, wijzigen, uploaden van de database kan natuurlijk voor problemen zorgen: als iemand iets op m'n site doet wat de database aanpast terwijl ik aan het wijzigen ben, dan gaat die wijziging dus verloren zodra ik mijn (nu oude) versie weer upload. Daarom gooi ik de site altijd plat terwijl ik zo'n database wijziging doe, maar dat is natuurlijk ook niet ideaal...
Lang verhaal kort: hoe vermijd ik dat ik de database moet downloaden, wijzigen en weer uploaden? Is er een betere manier om de database aan te passen? Ik bedenk bijvoorbeeld een pagina op m'n website die alleen voor mij te bereiken is (geen idee hoe ik dat voor elkaar krijg behalve met een wachtwoord) waar ik een willekeurige query op de database kan uitvoeren. Maar dat lijkt me ook niet echt veilig, handmatig queries intypen kan nog wel eens misgaan (je zou maar een 'where ID = ..' vergeten bij een update), en voor elke query de database backuppen is ook een beetje overdreven denk ik...
Er moet toch een betere manier zijn? Ik geloof dat MS SQL dit toch beter geregeld heeft, daarvoor kun je gewoon een script runnen dat de database tabellen kan wijzigen geloof ik? Bestaat er niet iets vergelijkbaars voor Access?
Enige suggesties?