【问题标题】:alter stored procedure to use snapshot isolation level更改存储过程以使用快照隔离级别
【发布时间】:2012-04-11 08:17:13
【问题描述】:

快速提问我有一个使用快照启用的数据库

ALTER DATABASE myDB
SET ALLOW_SNAPSHOT_ISOLATION ON

我正在尝试更改现有存储过程以使用事务隔离级别读取未提交的内容,如下所示:

USE [myDB]
GO
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
/****** Object:  StoredProcedure [dbo].[myStoredProcedure]    Script Date: 03/27/2012 11:39:24 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[myStoredProcedure]

AS
BEGIN
    SELECT *
    FROM someTable
END

RETURN 0

但是当我重新打开存储过程时,SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 语句消失了。

USE [myDB]
GO
/****** Object:  StoredProcedure [dbo].[myStoredProcedure]    Script Date: 03/27/2012 11:39:24 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[myStoredProcedure]

AS
BEGIN
    SELECT *
    FROM someTable
END

RETURN 0

实际设置了事务级别吗?我希望在关闭并重新打开存储过程窗口后该语句仍然存在。只是想验证一下,谢谢。

【问题讨论】:

    标签: sql-server database sql-server-2008 tsql sql-server-2005


    【解决方案1】:

    你必须把它放在过程体中。如果它在外部,您只是在该隔离级别中更改它,而不是更改过程定义以使用它。

    USE [myDB]
    GO
    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    ALTER PROCEDURE [dbo].[myStoredProcedure]
    
    AS
    BEGIN
        SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    
        SELECT *
        FROM someTable
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2010-11-10
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多