Even een complex probleem kort samenvatten is een probleem op zich...
Ik wil in m'n programma de mogelijkheid bieden om queries uit te laten voeren door via m'n programma tekst te laten invoeren.
Over deze queries moet enige statistiek worden opgevangen (aantal rows bepalen etc).
Uiteraard wil je niet dat ze 'drop table ... ' of 'delete from ...' gaan uithalen. Die lijst is uiteraard wel aftelbaar, maarja, de kans dat ik hierin een foutje ongelijk aan 0.
Dus: Enige hints hoe ik dit kan aanpakken?
Ik zat zelf te denken om de query als tekst aan een Stored Procedure door te geven en in die stored procedure dan zoiets te laten bevatten als
Het hoeft overigens niet hacker proof te zijn, en daarmee bedoel ik dat ik er vanuit mag gaan dat de gebruiker verder geen toegang tot de database heeft. Hij/zij kan dus niet zelf rare stored procedures hebben aangemaakt.
Dus:
- Is deze TRANSACTION methode een goede manier?
- Valkuilen?
- Alternatieven? Alleen als TRANSACTION niet voldoende is...
Ik wil in m'n programma de mogelijkheid bieden om queries uit te laten voeren door via m'n programma tekst te laten invoeren.
Over deze queries moet enige statistiek worden opgevangen (aantal rows bepalen etc).
Uiteraard wil je niet dat ze 'drop table ... ' of 'delete from ...' gaan uithalen. Die lijst is uiteraard wel aftelbaar, maarja, de kans dat ik hierin een foutje ongelijk aan 0.
Dus: Enige hints hoe ik dit kan aanpakken?
Ik zat zelf te denken om de query als tekst aan een Stored Procedure door te geven en in die stored procedure dan zoiets te laten bevatten als
SQL:
1
2
3
4
5
6
7
8
9
| ... BEGIN TRANSACTION MijnStartPunt ... exec(@Query2Perform) -- statistiek bepalen ... ROLLBACK TRANSACTION MijnStartPunt -- statistiek opslaan ... |
Het hoeft overigens niet hacker proof te zijn, en daarmee bedoel ik dat ik er vanuit mag gaan dat de gebruiker verder geen toegang tot de database heeft. Hij/zij kan dus niet zelf rare stored procedures hebben aangemaakt.
Dus:
- Is deze TRANSACTION methode een goede manier?
- Valkuilen?
- Alternatieven? Alleen als TRANSACTION niet voldoende is...
facts don't care about your feelings