Weet iemand een handige manier om snel MS access query's te vertalen zodat deze gebruikt kunnen worden in Microsoft SQL Sever??
Verwijderd
laat ik hem nog maar een keer omhoog schoppen, want ik zit met hetzelfde probleem.
Weet iemand een manier?
Ik moet namelijk 1500 query's converteren
Weet iemand een manier?
Ik moet namelijk 1500 query's converteren
Hmm... Zo'n werk zal dat wel niet zijn... Alletwee MS producten, dus het SQL dialect zal wel zeer gelijkaardig zijn.
Hoogstens wat functies veranderen denk ik...
Hoogstens wat functies veranderen denk ik...
https://fgheysels.github.io/
Lijkt me zolang je geen specifieke access functies gebruikt en het gewoon op standaard SQL houdt dat je niet teveel problemen tegen moet komen.
Wat voor fouten krijg je terug dan
Want je kan altijd een hoop regexen in veel gevallen
Wat voor fouten krijg je terug dan
Want je kan altijd een hoop regexen in veel gevallen
Ja man
Verwijderd
ik maak gebruik van iif, en dat moet omgezet worden naar case, dacht ik.
Verder kent SQL server distinctrow niet, maar dat probleem is misschien nog wel snel mop te lossen door gewoon distinct
Verder kent SQL server distinctrow niet, maar dat probleem is misschien nog wel snel mop te lossen door gewoon distinct
Ik zou zeggen: gebruik zoveel mogelijk ANSI SQL
Dan hoef je enkel maar de evt functies te vervangen als je overgaat naar een ander DBMS
Dan hoef je enkel maar de evt functies te vervangen als je overgaat naar een ander DBMS
https://fgheysels.github.io/
Verwijderd
dat gaat fout, je tabellen gaan wel mee, maar je query's niet en de upsizing wizard plaatst de tabellen ook niet goed in sql serverOp donderdag 11 juli 2002 11:19 schreef CLARDIMA het volgende:
heb je het al 's geprobeerd met de upsizing wizard? is meteen je database geconverteerd
Verwijderd
Ze maken nu gebruik van access sql, het mag van mij best naar ansi-sql worden geconverteerd, de vraag is alleen wat is de snelste manier?Op donderdag 11 juli 2002 11:19 schreef whoami het volgende:
Ik zou zeggen: gebruik zoveel mogelijk ANSI SQL
Dan hoef je enkel maar de evt functies te vervangen als je overgaat naar een ander DBMS
Is er een tool voor?
Je zou toch zeggen dat Microsoft hier een tool voor heeft geschreven, om die query's zover als mogelijk is te converteren van access naar sql server.
Verwijderd
Syntax is identiek, behalve bij LIKE statements, daar moet je de '*' vervangen door '%'Op donderdag 14 maart 2002 12:08 schreef mkrauweel het volgende:
Weet iemand een handige manier om snel MS access query's te vertalen zodat deze gebruikt kunnen worden in Microsoft SQL Sever??
edit:
Distinctrow kent SQLServer niet idd. Distinct werkt op de gehele row. Distinct (field) met meerdere fields in de selectclause werkt dus anders in sqlserver dan in access
Distinctrow kent SQLServer niet idd. Distinct werkt op de gehele row. Distinct (field) met meerdere fields in de selectclause werkt dus anders in sqlserver dan in access
Die queries waar je over spreekt zijn opgeslagen parametriseerde queries, neem ik aan die je wilt omzetten naar stored procedures?
Wellicht is het een idee te kijken naar sql export mogelijkheden binnen access, want SQLServer kent geen '?' support, en verlangt named parameters in de stored procedures.
Kan toch een Regex loslaten op de code waarin je
LIKE '**' vervangt door LIKE '%%'
bijvoorbeeld
LIKE '**' vervangt door LIKE '%%'
bijvoorbeeld
Ja man
Verwijderd
Oh, nee idd. dat wordt iets vanOp donderdag 11 juli 2002 11:44 schreef Sire het volgende:
[..]
sql server ondersteunt toch ook geen iif?
SELECT CASE field
WHERE valueintable THEN valueneeded
WHERE valueintable2 THEN valueneeded2
END As NameInResultset
FROM Table
Als je queries in de clientcode staan is er niets aan de hand, dan moet je die daar vervangen en heb je verder geen geneuzel met stored procedures.
Verwijderd
dat is ook de bedoeling, het probleem is alleen dat bepaalde dingen in T-SQL anders zijn dan in Access.
Misschien dat daar iets op gevonden is.
Het is niet grappig om in elke query 7 iif statements te gaan vervangen door case statements. vooral niet als er in iif gebruik wordt gemaakt van and en or.
Misschien dat daar iets op gevonden is.
Het is niet grappig om in elke query 7 iif statements te gaan vervangen door case statements. vooral niet als er in iif gebruik wordt gemaakt van and en or.
Verwijderd
Hier ff een voorbeeld:
Zulke query's krijg je niet met regex voor elkaar denk ik :`(
code:
1
2
3
4
5
6
7
8
9
| SELECT DISTINCTROW tblBewoner.Bewoner_ID, IIf(([tblMutatie_BewonerMutaties].[Afdeling_ID] Is Null) Or (Not [Overlijdingsdatum] Is Null),[tblBewoner].[Afdeling_ID],[tblMutatie_BewonerMutaties].[Afdeling_ID]) AS Afdeling_ID, IIf([overlijdingsdatum] is null,IIf([MutatieSoort]=3,Null,[tblMutatie_BewonerMutaties].[Mutatietype_ID]),0) AS MutatieType_ID, tblBewoner.OverlijdingsDatum, tblBewoner.Zoeknaam, tblBewoner.Geslacht, tblBewoner.Geboortedatum FROM tblBewoner LEFT JOIN tblMutatie_BewonerMutaties ON tblBewoner.Bewoner_ID = tblMutatie_BewonerMutaties.Bewoner_ID WHERE(((IIf([tblMutatie_BewonerMutaties].[Afdeling_ID] is null Or Not [Overlijdingsdatum] is null,[tblBewoner].[Afdeling_ID],[tblMutatie_BewonerMutaties].[Afdeling_ID])) In (SELECT tblPersoneelAfdeling.Afdeling_ID FROM tblPersoneelAfdeling WHERE (((tblPersoneelAfdeling.Personeel_ID)=463));))) AND ( (((tblMutatie_BewonerMutaties.EindDatum)>=date() Or (tblMutatie_BewonerMutaties.EindDatum) is null) AND ((tblMutatie_BewonerMutaties.MutatieSoort)=1 Or (tblMutatie_BewonerMutaties.MutatieSoort)=2)) OR (((tblMutatie_BewonerMutaties.MutatieSoort)=3 Or (tblMutatie_BewonerMutaties.MutatieSoort) is null) AND ((tblBewoner.Afdeling_ID)=0) AND ((tblBewoner.OverlijdingsDatum) is null)) OR ((Not (tblBewoner.OverlijdingsDatum) is null))) GROUP BY tblBewoner.Bewoner_ID, IIf([tblMutatie_BewonerMutaties].[Afdeling_ID] is null Or Not [Overlijdingsdatum] is null,[tblBewoner].[Afdeling_ID],[tblMutatie_BewonerMutaties].[Afdeling_ID]), IIf([overlijdingsdatum] is null,IIf([MutatieSoort]=3,Null,[tblMutatie_BewonerMutaties].[Mutatietype_ID]),0), tblBewoner.OverlijdingsDatum, tblBewoner.Zoeknaam, tblBewoner.Geslacht, tblBewoner.Geboortedatum ORDER BY tblBewoner.ZoeknaamtblMedicijngebruik.Stop)> 10/7/2002) |
Zulke query's krijg je niet met regex voor elkaar denk ik :`(
Verwijderd
No offence, maar die queries zijn belachelijk complex.
Ik begrijp niet waarom je IIF's in je select statement stopt, je retourneert dan toch beide fields en plaatst isnull() code in je dataverwerkingscode die de selectie maakt tussen twee fields? (Naast het feit dat testen null de ene waarde oplevert of de andere iewat gammel aandoet)
in T-SQL heb je de functie ISNULL(field, value), die 'value' plaatst ipv NULL indien field NULL is.
Ik begrijp niet waarom je IIF's in je select statement stopt, je retourneert dan toch beide fields en plaatst isnull() code in je dataverwerkingscode die de selectie maakt tussen twee fields? (Naast het feit dat testen null de ene waarde oplevert of de andere iewat gammel aandoet)
in T-SQL heb je de functie ISNULL(field, value), die 'value' plaatst ipv NULL indien field NULL is.
Ik zal ff een regex expert aanroepen
Regexp expert in de lunch
Arien of Tomato schijnen er aardig wat van te kunnen
* BierPul is regex N00b verder
Regexp expert in de lunch
Arien of Tomato schijnen er aardig wat van te kunnen
* BierPul is regex N00b verder
Ja man
Queries zijn waarschijnlijk gemaakt met behulp van de wizard. (en dan krijg je die vreemde opeenstapelingen)Op donderdag 11 juli 2002 12:06 schreef Otis het volgende:
No offence, maar die queries zijn belachelijk complex.
Zo niet, moet de persoon die ze wel gemaakt heeft dringend een ander beroep gaan zoeken, Putjes-schepper ofzo.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
In T-SQL heb je inderdaad de handige Isnull, maar die kun je niet zo gebruiken in een Access queryOp donderdag 11 juli 2002 12:06 schreef Otis het volgende:
Ik begrijp niet waarom je IIF's in je select statement stopt, je retourneert dan toch beide fields en plaatst isnull() code in je dataverwerkingscode die de selectie maakt tussen twee fields? (Naast het feit dat testen null de ene waarde oplevert of de andere iewat gammel aandoet)
IsNUll(veld) geeft een boolean terug of de waarde null is of niet, dus je kunt niet zoals je in t-sql kunt doen IsNull(veld1, veld2) gebruiken. Een Iif is dan eigenlijk de enigste manier...
Ik vind het overigens wel een beetje raar dat je in Access fijn VBA kunt gebruiken in je query, terwijl imho veel dingen in t-sql veel makkelijker te doen zijn... jammer dat ze niet een t-sql achtig iets hebben ingebouwt in Access (desnoods iets minder uitgebreid), mjah das offtopic
Exact expert nodig?
Verwijderd
Omdat Access in eerste instantie bedoeld was dat je middels draw 'n run programmering applicaties kon maken, dus in een query wizard je queries bouwen en die direct koppelen aan schermpjes. t-sql is bedoeld voor het behandelen van data, maar niet op zo'n manier dat je werk wat in hogere lagen veel beter kan, doet in de database.Op donderdag 11 juli 2002 12:19 schreef Crazy_D het volgende:
[..]
Ik vind het overigens wel een beetje raar dat je in Access fijn VBA kunt gebruiken in je query, terwijl imho veel dingen in t-sql veel makkelijker te doen zijn... jammer dat ze niet een t-sql achtig iets hebben ingebouwt in Access (desnoods iets minder uitgebreid), mjah das offtopic
Verwijderd
Het is verrot inderdaad dat je geen t-sql hebt gebruikt maar goed. Ben toch bang dat je een replace moet gaan doen. Word handwerk
Veel succes 
Hij heeft teminste werk...Zo niet, moet de persoon die ze wel gemaakt heeft dringend een ander beroep gaan zoeken, Putjes-schepper ofzo.
Pagina: 1