我已经搜索了一段时间,找不到任何开头。如果这是重复的操作,我深表歉意,但也许我在谷歌搜索时的关键词并不是最好的。
我有一堆以IF开头的脚本,如果该IF为True,则NOEXEC标志设置为ON
类似这样的东西
if TRUE
BEGIN
SET NOEXEC ON;
END
问题是,当我将NOEXEC设置为ON后执行任何脚本时,它将无法运行。我已经进行了测试,并且如果我将SET NOEXEC OFF设置为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,否则我只会从第一条消息中获取打印内容
答案 0 :(得分:3)
Conversion of type 'Timer' to type 'number' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.ts(2352)
停止执行SQL命令,直到遇到set noexec on
。
有一条命令可获取noexec的当前状态,因为set noexec off
处于打开状态,因此它不会执行。如果它确实执行了,那就意味着noexec已关闭。
可以说,设计团队可以提出另一个“特殊”命令,该命令绕过noexec
状态并始终执行(就像noexec on
一样),为您提供{{1 }}。据我所知,这样的命令不存在,因此尽管有一种query the current SET
flags的方法,但noexec却没有。
您可以:
set noexec off
noexec
。如果您退回noexec off
,则noexec关闭。