I'm a part-time accidental SQL Server 2005 DBA whose full-time job is developing business intelligence solutions, but where the BI intersects with the database, it falls in my 'stack'.
We have a number of scheduled reports that failed when another developer needed to add SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
in several stored procedures running against an enterprise application database.
It turns out that the login used by the reporting tool didn't have the correct permissions. It could execute the stored procedures, but not with the SET TRANSACTION ISOLATION LEVEL
added.
I was able to get around it temporarily by adding the db_owner
role to the login properties for the database. It already had db_datareader
, db_datawriter
, and public
. But it seems like I should be able to grant a permission that would alleviate the problem without giving the login the db_owner
role.
I've read through all the information on GRANT
in the SQL Server books online, but can't find what permission to grant.
Can anyone help me out? If you know of a resource, I'd love to know about it.
Thanks!
Best Answer
First a quick point .. It's pretty unusual someone "needs" to use
read uncommitted
unless the need is to randomly get bad data.Lecture done, permissions are generally found under individual commands. In this case you are looking at SET TRANSACTION ISOLATION LEVEL.
Typically you would find a
Security/Permissions
section, although in this case there isn't one. I believe that is because this is a command that anyone can run (although some isolation levels have to be enabled). Another place you can look for permissions is under theproperties
of the database or server. You will see aPermissions
tab that will have a list of available permissions. But again I didn't find anything related to the command.I'm mostly stumped by the fact that you granted db_owner and they worked. My guess is that it isn't the SET ISOLATION LEVEL that is actually causing the issue. Can you please include the actual error you are getting?