首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQLCMD中忽略设置NOCOUNT

在SQLCMD中忽略设置NOCOUNT
EN

Stack Overflow用户
提问于 2017-11-29 17:36:18
回答 3查看 3.5K关注 0票数 4

我想知道每个由查询运行的DDL语句有多少行受到影响,所以我在每个运行的查询开始时设置了NOCOUNT。

示例查询:

代码语言:javascript
复制
SET NOCOUNT OFF;
GO
BEGIN TRY

    BEGIN TRANSACTION
    UPDATE dbo.tbProvClause SET ClauseTemplate = 'Clause1' where DocumentName = '\Templates\EndorsAccessPlainLanguageQCEng.CDS';
    UPDATE dbo.tbProvClause SET ClauseTemplate = 'Clause 2' where DocumentName = '\Templates\EndorsEnforcedRemovallLtdMktPublicPropertyQCEng.CDS';
    UPDATE dbo.tbProvClause SET ClauseTemplateFR = 'Malgré French Clause 1' where DocumentNameFR = '\Templates\EndorsAccessHOPPQcFr.CDS';
    UPDATE dbo.tbProvClause SET ClauseTemplateFR = 'Malgré les exceptions  Clause 2' where DocumentNameFR = '\Templates\EndorsEnlèvementFTNdomainepublicERLMPublicPropertyQcFr.CDS';  
   COMMIT TRAN
   PRINT 'Script Completed With Success - Changes committed on ' + CAST(current_timestamp AS varchar(25))
END TRY

BEGIN CATCH
   --
END CATCH

GO

然后它又回来了

代码语言:javascript
复制
(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)
Script Completed With Success - Changes committed on Nov 29 2017 12:10PM

这很好。但是,当我在SQLCMD中运行相同的时候,我只得到1行.i.e。

代码语言:javascript
复制
sqlcmd -S testserver -dTestDB -i StackOverflowSQL.sql

(1 rows affected)
Script Completed With Success - Changes committed on Nov 29 2017 12:24PM

如何在SQLCMD中保留SET NOCOUNT OFF的能力?我问这个问题的原因是,我想使用SQLCMD对许多脚本进行批处理,并且我将保存它们的日志。在这种情况下,SET NOCOUNT OFF在检查受影响的1行行的多少行时非常有用,这会给出运行成功的反馈。

EN

回答 3

Stack Overflow用户

发布于 2017-11-29 17:48:40

试试像这样的东西,看看它是否有效。

使用-v (小写字母v)。

代码语言:javascript
复制
sqlcmd -v NOCOUNT=OFF -S testserver -dTestDB -i StackOverflowSQL.sql

在同一个命令提示符中,首先运行SET NOCOUNT=OFF,然后调用sqlcmd

查看下面的文档链接并搜索“变量优先”。你会有一些想法的。

https://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility

票数 2
EN

Stack Overflow用户

发布于 2017-11-29 18:24:20

只是一种预感。在"set nocount off“之后删除Go语句。

首先,"set nocount off“语句不需要执行。其次,我认为GO (批处理执行者)可能只为该批处理设置选项。

如果我的建议不起作用,有一个相当愚蠢的解决办法。您可以:在可能感兴趣监视行计数的每个sql语句之后打印@@rowcount。

票数 0
EN

Stack Overflow用户

发布于 2017-11-29 20:42:07

发现问题了。机器上安装了多个版本的SQLCMD。要找出我使用的是哪个版本:

代码语言:javascript
复制
E:\Test>where sqlcmd
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.EXE

我使用的是Server 2008 R2版本。I查看了系统环境变量路径并更改了顺序,现在它使用了SQL server 2012版本。更改路径后

代码语言:javascript
复制
E:\Test>where sqlcmd
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.EXE
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE

E:\Test>sqlcmd -S testserver -dTestdb -i StackOverflowSQL.sql

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)
Script Completed With Success - Changes committed on Nov 29 2017  3:37PM

它起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47558546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档