インストールの前に、アプリケーションは SQL をチェックして、さまざまな設定とともに正しい権限があることを確認します。それらの設定の 1 つが@@OPTION NOCOUNT
.
この値をデータベースから引き出す方法を一生理解できないようです。
私はこれを試しました。オンかオフかに関係なくNOCOUNT
、常に 1 が返されます。
DECLARE @NOCOUNT INT = 1; IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 10;
SELECT @NOCOUNT AS NOCOUNT;
Java で別の SQL ステートメントを使用して一時テーブルを作成しようとしましたが、そこから値を取得しようとしましたが成功しませんでした。テーブルは問題なく作成されますが、この場合常に挿入される値はゼロです。
CREATE TABLE TempNoCount(tNoCount int);
DECLARE @NOCOUNT int = 0;
IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 1;
INSERT INTO #TempNoCount (tNoCount) VALUES (@NOCOUNT);
私が何をしても、データベースから正しい値を引き出すことができないようです。
Java 内でこのクエリを実行しても、ゼロが返されます。
DECLARE @NOCOUNT INT = 0
IF @@OPTIONS & 512 > 0 SET @NOCOUNT = 2
SELECT @NOCOUNT AS NC
Java経由で簡単なクエリも試しました:
SELECT CONVERT(INT,@@OPTIONS & 512) as NOCOUNT;
オンかオフかに関係なく、常にゼロを返します。
NOCOUNT
Javaアプリケーションを使用してオンまたはオフかどうかを確認する方法を理解しようと数日を費やしましたが、アイデアが不足しています。
奇妙な部分は、SQLMgmtスタジオを使用すると、すべてがうまく機能します。挿入などすべてが機能します。私のJavaプログラムを使用すると、そうではありません。
これはJavaの制限ですか?@@OPTIONS
MS は、外部プログラムを使用してプルすることを許可したくないですか?
ストアドプロシージャも試しました。ストアド プロシージャを呼び出すと、返されたときに結果が 512 になるはずなのに、ゼロが返されNOCOUNT
ます。
助言がありますか?この時点で何でも試してみることができてうれしいです。