【发布时间】:2019-05-07 15:47:55
【问题描述】:
我已经搜索了一段时间,但找不到任何可以开始的内容。如果这是重复的,我深表歉意,但也许我在谷歌搜索时的关键字不是最好的。
我有一堆以 IF 开头的脚本,如果该 IF 为 True,则 NOEXEC 标志设置为 ON
类似的东西
if TRUE
BEGIN
SET NOEXEC ON;
END
问题是当我在 NOEXEC 设置为 ON 后执行任何脚本时,它不会运行。我已经测试过了,如果我执行 SET NOEXEC OFF,其余脚本运行没有问题。
server.ConnectionContext.ExecuteNonQuery(script)
我是否需要检查 NOEXEC 的状态,还是应该将其附加到我所有脚本的开头?
谢谢大家
编辑:更好地解释问题的脚本示例
1º 脚本
select * from List
print'Done printing'
2º 脚本
SET NOEXEC ON;
select * from List
print'Won't print'
3º 脚本
select * from List
print'Done printing'
我的预期结果是在我的 FileInfoMessage 上有两条“完成打印”消息,但除非我执行 SET NOEXEC OFF,否则我只会从第一条消息中得到打印
【问题讨论】:
-
when I execute any script after NOEXEC has been set to ON it wont run- 这有点像 noexec。如果您不想要这种行为,为什么要首先使用它? -
脚本在哪里,您如何运行它,您期望的行为是什么以及实际行为是什么? ADO.NET 中没有
ConnectionContext表明您正在使用 SQLCLR。为什么? -
好吧,我表达得很糟糕!我将编辑问题
-
a) 为每个脚本使用单独的连接。 b) 在您打开它的每个脚本的末尾关闭 noexec。
-
noexec的问题在于,当它打开时,如果您发出一个假定获取其当前状态的 sql 命令,它不会执行,因为 noexec 已打开。因此,虽然有一种方法可以query the currentSETflags,但没有一种方法可以用于 noexec。
标签: sql-server vb.net sql-server-2008-r2