.Netアプリケーションで、以下を実行すると、値が一致しません。
SELECT
SESSIONPROPERTY('ARITHABORT'),
CASE WHEN (@@OPTIONS & 64) = 64 THEN 1 ELSE 0 END
私はという印象の下にあったSESSIONPROPERTY
と@@OPTIONS
同じ結果を生成します。私の場合、SESSIONPROPERTY
は0を@@OPTIONS
返し、1を返します。
どちらがより正確で、なぜですか?
Jeroenに同意します.... Net固有ではありません。@@OPTIONS
一方で、接続上で何が来るのか反映され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 ] );
}
}
}
}
それがバグなのか、それともただのドキュメンタリーなのか疑問に思う人もいます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加