Ik heb een probleem met rechten in een sp. De rol waaronder ik een sp uitvoer heeft execute rechten op de sp. In deze sp wil ik een dynamische select uitvoeren op een tabel waarop de rol geen rechten heeft.
De sp ziet er versimpelt zo uit (regel 4 toegevogd tbv dit voorbeeld):
Als ik regel 4 uitvoer krijg ik als resultaat de records uit tabel 1 met id = 1
Als ik regel 8 uitvoer krijg een rechten foutmelding: select access denied on blablabla...
Blijkbaar wordt het statement op regel 4 onder een andere role dan regel 8. Heeft iemand ideeen?
Ik heb zelf ook al geprobeerd om sp_executesql te gebruiken ipv alleen exec, maar het probleem hiermee is dat mijn originele @Select variabele ruimschoots de 4000 chars overschrijft(zie declaratie van @Select), het max. aantal karakters van de input van sp_executesql.
Die accepteert ook ntext als input, deze is groot genoeg maar ntext kun je niet als lokale variabele in een sp definieren.
De sp ziet er versimpelt zo uit (regel 4 toegevogd tbv dit voorbeeld):
SQL:
1
2
3
4
5
6
7
8
9
| create procedure haalrecord @ID declare @select varchar(8000) select * from tabel1 where id = 1 set @select = 'select * from tabel1 where id=' + convert(varchar(2), @ID) exec (@select) return |
Als ik regel 4 uitvoer krijg ik als resultaat de records uit tabel 1 met id = 1
Als ik regel 8 uitvoer krijg een rechten foutmelding: select access denied on blablabla...
Blijkbaar wordt het statement op regel 4 onder een andere role dan regel 8. Heeft iemand ideeen?
Ik heb zelf ook al geprobeerd om sp_executesql te gebruiken ipv alleen exec, maar het probleem hiermee is dat mijn originele @Select variabele ruimschoots de 4000 chars overschrijft(zie declaratie van @Select), het max. aantal karakters van de input van sp_executesql.
Die accepteert ook ntext als input, deze is groot genoeg maar ntext kun je niet als lokale variabele in een sp definieren.
Problem Exists Between Chair And Keyboard