Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQLServer2005中,是否可以基于每个用户设置事务隔离级别?_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

Sql server 在SQLServer2005中,是否可以基于每个用户设置事务隔离级别?

Sql server 在SQLServer2005中,是否可以基于每个用户设置事务隔离级别?,sql-server,sql-server-2005,tsql,Sql Server,Sql Server 2005,Tsql,在SQLServer2005中,是否可以自动将事务隔离级别设置为(例如)每个用户读取未提交的事务 (例如,如果我为用户Fred设置了这样一个登录选项,Fred就不必记得在他的select语句中洒上NOLOCK提示,也不必记得在他的sql中添加一个set事务隔离级别语句。)如果是存储过程,那么在过程中就可以有这样的代码 if user_name() in('dbo','username','otherusers','bla') set transaction isolation level re

在SQLServer2005中,是否可以自动将事务隔离级别设置为(例如)每个用户读取未提交的事务


(例如,如果我为用户Fred设置了这样一个登录选项,Fred就不必记得在他的select语句中洒上NOLOCK提示,也不必记得在他的sql中添加一个set事务隔离级别语句。)

如果是存储过程,那么在过程中就可以有这样的代码

if user_name() in('dbo','username','otherusers','bla') 
set transaction isolation level read uncommitted
else
set transaction isolation level read committed
当然,现在你有一个维护问题,所有当前的程序都必须修改

您也可以使用suser_sname()进行检查,但这确实会成为一个大问题


您也可以使用我没有尝试过且不确定是否有效的

用户将如何连接?如果我正确理解了你的问题,那么我认为没有任何方法可以做到这一点。如果所有用户都是通过一组代码连接的,那么可能是这样,但是如果您希望在SSM中的特殊查询中发生这种情况,等等。那么不是。我正在考虑设置此选项,而不管用户如何连接(因此设置必须在SQL Server中)。我将研究触发器选项。这不完全是我所希望的,但它可能会起作用——谢谢!Ewen-扳机选项运气好吗?我正试图做和你完全一样的事情,听起来像。我有很多活动是只读的,我想确保它们没有锁定表。@Tom很抱歉,这已经晚了2年多,但是不,触发器选项不起作用。当然,您可以在触发器中说
SET ISOLATION LEVEL
,但正如它在存储过程中工作一样,当触发器超出范围时,它将恢复为默认值-因此它仅适用于在登录触发器内部运行的查询。有。