【问题标题】:SET TRANSACTION ISOLATION LEVEL Scope on stored procedureSET TRANSACTION ISOLATION LEVEL 存储过程的范围
【发布时间】:2012-10-23 16:37:33
【问题描述】:

我正在创建一个存储过程,我不想在脚本中进行任何锁定。我确信我需要在脚本的开头声明“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”。但我不确定如何在声明之后开始。 Microsoft 的一个示例显示以“BEGIN TRANSACTION”开头并以“END TRANSACTION”结尾。有人在“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”之后开始时没有任何 BEGIN 和 END 语句。请建议我使用“SET TRANSACTION ISOLATION LEVEL”语句来实现我的目标的正确方法。

http://msdn.microsoft.com/en-us/library/aa259216(v=sql.80).aspx

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
BEGIN TRANSACTION
SELECT * FROM publishers
SELECT * FROM authors
...
COMMIT TRANSACTION

SQL Server: how to set default isolation level for the entire stored procedure?

BEGIN
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
 -- will a transaction level for a atomic transaction created by SQL Server for this statement be READ COMMITTED 
SELECT * FROM T
END

【问题讨论】:

  • 第二个代码sn-p是Stored Procs的写法,必须在sql语句的开头。

标签: sql-server-2008 stored-procedures


【解决方案1】:

两种说法都可以

Transaction scope in a stored procedure, from MSDN

如果您在存储过程中发出 SET TRANSACTION ISOLATION LEVEL 或 触发器,当对象返回控制时,隔离级别被重置 到调用对象时的有效级别。例如,如果 您在批处理中设置 REPEATABLE READ,然后批处理调用存储的 将隔离级别设置为 SERIALIZABLE 的过程,即隔离 存储过程时级别设置恢复为 REPEATABLE READ 将控制权返回给批处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2022-11-01
    相关资源
    最近更新 更多