在我的 .Net 应用程序中,如果我执行以下命令,值将不匹配:
SELECT
SESSIONPROPERTY('ARITHABORT'),
CASE WHEN (@@OPTIONS & 64) = 64 THEN 1 ELSE 0 END
我的印象是 SESSIONPROPERTY
和 @@OPTIONS
会产生相同的结果。在我的例子中,SESSIONPROPERTY
返回 0 而 @@OPTIONS
返回 1。
哪个更准确,为什么?
最佳答案
我同意 Jeroen 的观点...它不是特定于 .Net 的。 @@OPTIONS
反射(reflect)了连接中的内容,而 SESSIONPROPERTY
则没有。打开跟踪以查看连接上发生的情况,您将看到 .Net 默认连接的作用:
我在运行命令之前完成了相同的设置:
alter database [thedatabase] set arithabort on with no_wait
...我的测试工具是:
using ( var conn = new SqlConnection( "Data Source=.;Initial Catalog=thedatabase;Integrated Security=True" ) )
{
conn.Open( );
using ( var cmd = conn.CreateCommand( ) )
{
cmd.CommandText = "SELECT SESSIONPROPERTY( 'ARITHABORT' ), CASE WHEN(@@OPTIONS &64) = 64 THEN 1 ELSE 0 END";
cmd.CommandType = System.Data.CommandType.Text;
using ( var reader = cmd.ExecuteReader( ) )
{
while ( reader.Read( ) )
{
Console.WriteLine( "{0},{1}", reader[ 0 ], reader[ 1 ] );
}
}
}
}
有人想知道这是一个错误......还是只是 squirrely doc。
关于.net - 在 SQL Server 中,SESSIONPROPERTY 和 @@Options 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54560319/