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.