Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008 在存储过程上设置事务隔离级别作用域_Sql Server 2008_Stored Procedures - Fatal编程技术网

Sql server 2008 在存储过程上设置事务隔离级别作用域

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语句。请建议我使用“设置事务隔离级别”语句来实现我的目标的正确方法 两种说法

我正在创建一个存储过程,我不希望脚本被锁定。我确信我需要在脚本的开头声明“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