这是我的配置:
- 我有一个可重新运行的批处理脚本,用于更新我的数据库。
- 在该批处理脚本中,我有如下代码:
- 如果表“A”不存在,则创建表“A”并将行插入其中。
- 稍后在该批处理脚本中,我在该表上
创建了一个模式绑定索引视图。
- 如果您还不知道,索引视图需要特定的客户端设置。
有时,当我重新运行脚本时,即在创建表之后,SQL Server Management Studio 会评估受“如果此表不存在”代码保护的“插入行”代码,并产生以下错误:
消息 1934,级别 16,状态 1,第 15 行 INSERT 失败,因为以下 SET 选项的设置不正确:'CONCAT_NULL_YIELDS_NULL,ANSI_WARNINGS,ANSI_PADDING,ARITHABORT'。验证 SET 选项对于索引视图和/或计算列上的索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作是否正确。
- 请注意:如果有人在真空中尝试此 INSERT 语句,我完全希望SSMS 生成此错误。
- 但不是当它受到条件块保护时。
我的问题:
SSMS 编译器是否评估所有表达式,无论它们是否实际执行?