我想查看查询运行的每个DDL语句会影响多少行,因此我在每个运行的查询的开头设置了SET NOCOUNT OFF。
示例查询:
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
然后返回
(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。
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行的行数将提供运行成功的反馈非常有用。
答案 0 :(得分:0)
这只是一种预感。在"设置nocount off"。
之后删除Go语句首先"设置nocount off"声明不要求GO。其次,我认为GO(批处理执行程序)可能只为该批次设置选项。
如果我的建议不起作用,有一个相当愚蠢的解决方法。 您可以: print @@ rowcount 在每个sql语句之后,您可能有兴趣监视行数。
答案 1 :(得分:0)
发现问题。机器中安装了多个版本的SQLCMD。要找出我正在使用的版本:
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
我使用的是SQL Server 2008 R2版本。我查看了系统环境变量PATH并更改了顺序,现在它使用SQL Server 2012版本。更改PATH后
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
有效!