错误:有未提交的事务

Rac*_*erX 5 t-sql sql-server sql-server-2005

我在SSMS中打开一个新窗口并运行:

SET ANSI_DEFAULTS ON 
GO

CREATE PROCEDURE [dbo].[zzz_test2]
(
    @a    int
)
AS
    SET NOCOUNT ON
    SET @a=1
    RETURN 0
GO
Run Code Online (Sandbox Code Playgroud)

然后关闭窗口,这会产生此警告:

There are uncommitted transactions. Do you wish to commit these before closing the window?

到底是怎么回事??

当我打开一个新的SSMS窗口并运行它:

SET ANSI_NULLS  ON  
GO    

CREATE PROCEDURE [dbo].[zzz_test2]
(
    @a    int
)
AS
    SET NOCOUNT ON
    SET @a=1
    RETURN 0
GO
Run Code Online (Sandbox Code Playgroud)

并关闭窗口,我没有得到任何警告.

Mar*_*ith 8

文档 中所述ANSI_DEFAULTS

启用(ON)时,此选项启用以下ISO设置:

SET ANSI_NULLS
SET CURSOR_CLOSE_ON_COMMIT
SET ANSI_NULL_DFLT_ON
SET IMPLICIT_TRANSACTIONS
SET ANSI_PADDING
SET QUOTED_IDENTIFIER
SET ANSI_WARNINGS
Run Code Online (Sandbox Code Playgroud)

作为记录在这里IMPLICIT_TRANSACTIONS上.

由于此设置为ON而自动打开的事务必须在事务结束时由用户显式提交或回滚