【发布时间】:2021-05-20 04:34:49
【问题描述】:
我试图确定在我的主调用存储过程下的存储过程以相同的事务隔离执行 级别。
例如,如果我设置SET TRANSACTION ISOLATION LEVEL SNAPSHOT,如果我在原始存储过程中调用另一个存储过程,它会保持快照吗?
CREATE PROCEDURE [dbo].[FirstStoredProc]
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
EXEC [dbo].[SecondStoredProc]
END;
CREATE PROCEDURE [dbo].[SecondStoredProc]
AS
BEGIN
SELECT name
FROM sys.objects
WHERE type = 'P';
END;
EXEC FirstStoredProc
select 会在快照隔离下运行吗?
【问题讨论】:
-
是的。轻松tested。请注意,如果
SecondStoredProc执行自己的SET TRANSACTION ISOLATION LEVEL,当我们返回FirstStoredProc时,它将在退出时重置为SNAPSHOT。
标签: sql sql-server