I have a system that allows users to log in and construct queries to run against a SQL 2012 server. The system needs to be pretty liberal in what queries it allows, so I'm just relying on SQL grants to prevent users from doing things they aren't supposed to.
I'm worried that something like priority inversion could still occur. Say a unprivileged user logs in, finds a table to abuse and runs a dozen or so outer joins on it. Or simply begins a transaction and never closes it.
I want to ensure that unprivileged users cannot block critical processes from more privileged users. I'm thinking of using the Resource Governor to do this, but I'm not sure if this is the best way of if there are other issues I might need to worry about.
What's the best way to ensure that queries from unprivileged users cannot block critical processes?