【发布时间】:2016-03-11 20:51:31
【问题描述】:
在安装之前,我们的应用程序会检查 SQL 以确保它具有正确的权限以及各种设置。其中一个设置是@@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;
不管它是打开还是关闭,仍然总是返回零。
我花了几天时间试图弄清楚如何使用 java 应用程序检查 NOCOUNT 是打开还是关闭,但我已经没有想法了。
奇怪的是,当我使用 SQLMgmt 工作室时,一切正常且花花公子。创建插入等一切正常。当我使用我的 java 程序时它不会。
这是java的i限制吗? MS不想让你使用外部程序拉@@OPTIONS吗?
我什至尝试了存储过程。当我调用存储过程时,它仍然返回零,即使在打开NOCOUNT 时结果应该是 512....
有什么建议吗?在这一点上,我更乐意尝试任何事情。
【问题讨论】:
-
您能否分享更多关于使用哪个库连接到 SQL Server 的信息?
-
另外,在您的第一个 TSQL 示例中,您是如何设置 NOCOUNT 开/关的?你有没有尝试明确地把它放在那里?即在顶部添加
SET NOCOUNT ON。 -
我也打开了 SQLMgmt 工作室。我从那里打开和关闭它。
-
我只是在使用 java.sql libarays。导入 java.sql.CallableStatement;导入java.sql.Connection;导入 java.sql.DriverManager;导入 java.sql.PreparedStatement;导入java.sql.ResultSet;导入java.sql.SQLException;导入 java.sql.Statement;
-
这是一个客户端设置,您正在为该特定连接打开/关闭它。如果您想为给定的连接打开/关闭它,然后明确设置它,然后进行检查。
标签: java sql-server tsql nocount