【发布时间】:2014-01-20 16:43:41
【问题描述】:
我在使用 dotnet SqlCommand 时遇到了一个奇怪的错误。
基本上,我正在执行一个包含多行注释的命令文本,其中包含GO,例如:
/*IF OBJECT_ID ( 'dbo.xxx', 'P' ) IS NOT NULL
DROP PROCEDURE [dbo].[xxx]
GO
*/
select * from dbo.abc
我得到的错误是“Missing end comment mark '*/'”
我能够缩小错误范围,并且该问题似乎与GO 有关。如果我删除 GO 就可以了。
如果我执行此命令并在 sql 配置文件中观察执行的查询,我会得到:
/*IF OBJECT_ID ( 'dbo.xxx', 'P' ) IS NOT NULL
DROP PROCEDURE [dbo].[xxx]
所以部分查询没有执行......并且缺少结束注释标记
我已经搜索过是否有人遇到过这个问题,因为我在 msdn 上看到了类似GO 问题的帖子...
我是唯一有这个问题的人吗?有解决办法吗?
【问题讨论】:
-
将 cmets 传递给您通过 SQLCommand 运行的查询有什么意义?我了解您何时将存储过程保存到服务器,但我不明白这里的重点。
-
我们有一个工具,它能够将 sql 脚本部署到数据库。基本上不是使用工具 A 部署到 SQL Server,使用工具 B 部署到 Oracle,工具 C 部署到 mysql 等等......我们拥有的是一种工具,它能够执行诸如 db 版本控制之类的操作,部署到“任何" 数据库引擎等...为了将 sql 代码部署到数据库,我们创建一个 DbCommand 并执行脚本。有时脚本包含带有 GO 字符串的 cmets。
-
好吧,不要在评论中走出去,不知道您还期待什么其他解决方案。
标签: .net sql-server sqlcommand