Sql server 2008 在存储过程上设置事务隔离级别作用域
我正在创建一个存储过程,我不希望脚本被锁定。我确信我需要在脚本的开头声明“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”。但我不确定在声明之后如何开始。Microsoft的一个示例显示,以“开始事务”开头,以“结束事务”结尾。有人在“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”之后启动时没有任何BEGIN和END语句。请建议我使用“设置事务隔离级别”语句来实现我的目标的正确方法 两种说法都可以 如果在存储过程或 触发器,当对象返回控制时,隔离级别重置 到调用对象时的有效级别。例如,如果 在批处理中设置可重复读取,然后批处理调用存储的 将隔离级别设置为可序列化的过程 当存储过程运行时,级别设置恢复为可重复读取 将控件返回给批处理Sql server 2008 在存储过程上设置事务隔离级别作用域,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,我正在创建一个存储过程,我不希望脚本被锁定。我确信我需要在脚本的开头声明“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”。但我不确定在声明之后如何开始。Microsoft的一个示例显示,以“开始事务”开头,以“结束事务”结尾。有人在“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”之后启动时没有任何BEGIN和END语句。请建议我使用“设置事务隔离级别”语句来实现我的目标的正确方法 两种说法
第二个代码段是在存储过程中使用的写入方式。它必须位于sql语句的开头。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
BEGIN TRANSACTION
SELECT * FROM publishers
SELECT * FROM authors
...
COMMIT TRANSACTION
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