• datsun (9/22/2016)


    Gail,

    I can't tell if the XACT_ABORT is On or Off.

    But the way to replicate auto rollback is this way:

    This is probably not what your wanting but I don't like to leave (whether I am just reading or participating in) threads with open questions....;

    With that said (typed) here is the answer to your question plus I added all of the other possibilities associated with finding out what the state of XACT_ABORT is.

    The answer lies in performing a simple BITWISE AND operation against @@OPTIONS, unless you know all these values yourself and can do them in your head (I CANNOT), here is a script to find all of the possible options and whether they are ON or OFF.

    Enjoy...

    SET XACT_ABORT ON

    SET NUMERIC_ROUNDABORT OFF

    SET CONCAT_NULL_YIELDS_NULL OFF

    SET ANSI_NULL_DFLT_OFF OFF

    SET ANSI_NULL_DFLT_ON OFF

    SET NOCOUNT OFF

    SET QUOTED_IDENTIFIER OFF

    SET ARITHIGNORE OFF

    SET ARITHABORT ON

    SET ANSI_NULLS OFF

    SET ANSI_PADDING OFF

    SET ANSI_WARNINGS OFF

    SET CURSOR_CLOSE_ON_COMMIT OFF

    SET IMPLICIT_TRANSACTIONS OFF

    SET DISABLE_DEF_CNST_CHK OFF --Obsolete in 2008 and greater

    DECLARE @OPTIONS INT

    DECLARE @OPTRESULTS VARCHAR(MAX)

    SET @OPTIONS=(SELECT @@OPTIONS)

    PRINT '@@OPTIONS= '+ CAST(@OPTIONS AS VARCHAR(20))

    IF (@OPTIONS & 16384)=16384

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'XACT_ABORT ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'XACT_ABORT OFF'

    IF (@OPTIONS & 8192)=8192

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'NUMERIC_ROUNDABORT ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'NUMERIC_ROUNDABORT OFF'

    IF (@OPTIONS & 4096)=4096

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'CONCAT_NULL_YIELDS_NULL ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'CONCAT_NULL_YIELDS_NULL OFF'

    IF (@OPTIONS & 2048)=2048

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_NULL_DFLT_OFF ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_NULL_DFLT_OFF OFF'

    IF (@OPTIONS & 1024)=1024

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_NULL_DFLT_ON ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_NULL_DFLT_ON OFF'

    IF (@OPTIONS & 512)=512

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'NOCOUNT ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'NOCOUNT OFF'

    IF (@OPTIONS & 256)=256

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'QUOTED_IDENTIFIER ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'QUOTED_IDENTIFIER OFF'

    IF (@OPTIONS & 128)=128

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ARITHIGNORE ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ARTHIGNORE OFF'

    IF (@OPTIONS & 64)=64

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ARITHABORT ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ARITHABORT OFF'

    IF (@OPTIONS & 32)=32

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_NULLS ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_NULLS OFF'

    IF (@OPTIONS & 16)=16

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_PADDING ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_PADDING OFF'

    IF (@OPTIONS & 8)=8

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_WARNING ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'ANSI_WARNING OFF'

    IF (@OPTIONS & 4)=4

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'CURSOR_CLOSE_ON_COMMIT ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'CURSOR_CLOSE_ON_COMMIT OFF'

    IF (@OPTIONS & 2)=2

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'IMPLICIT_TRANSACTIONS ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'IMPLICIT_TRANSACTIONS OFF'

    IF (@OPTIONS & 1)=1

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'DISABLE_DEF_CNST_CHK ON'

    ELSE

    SET @OPTRESULTS= @OPTRESULTS + CHAR(13) + 'DISABLE_DEF_CNST_CHK OFF'

    PRINT @OPTRESULTS

    EDIT***This is the wrong thread I wanted to post this in you did not specifically ask the question here but it does answer your comment. I apologize if this is too OT.