我的脚本 SQL 有问题,请帮助我。
例如:
我有一个插入声明:
INSERT INTO CUSTOMER (Code, Date) VALUES (1, GETDATE());
执行此插入时,返回以下消息:
“Ms 1934,Level 16,State 1,Server HENRIQUE-PC,第5行INSERT失败 因为以下SET选项有 设置不正确:'QUOTED _IDENTIFIER'即可。验证SET选项是否正确使用 索引视图和/或索引 计算列和/或过滤 索引和/或查询通知 和/或XML数据类型方法和/或 空间索引操作。“。
现在,当我使用SET QUOTED_IDENTIFIER ON
时,我的插入执行成功。
例如:
SET QUOTED_IDENTIFIER OFF
GO
INSERT INTO CUSTOMER (Code, Date) VALUES (1, GETDATE());
SET QUOTED_IDENTIFIER ON
GO
(1行受影响)
GETDATE()
和QUOTED IDENTIFIER
之间的关系是什么?
为什么我需要在这种情况下使用 QUOTED IDENTIFIER ?
我相信这是因为getdate。为什么呢?
感谢。
Henrique Melicio
答案 0 :(得分:3)
Henrique的,
您收到该错误的原因与GETDATE()
无关,它与您在CUSTOMER
表中的列上的索引有关。 SQL Server 2008的SET Statements (Transact-SQL)
文档中的这一位更详细地解释了这个问题:
创建和操作时 计算列或索引的索引 视图,SET选项ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER,ANSI_NULLS, ANSI_PADDING和ANSI_WARNINGS必须 设置为ON。选项 NUMERIC_ROUNDABORT必须设置为OFF。
如果未设置其中任何一个选项 到所需的值,INSERT, 更新,删除,DBCC CHECKDB和DBCC 对索引视图或。的CHECKTABLE操作 计算索引的表 列将失败。 SQL Server会 引发列出所有选项的错误 设置不正确。另外,SQL 服务器将处理SELECT语句 在这些表或索引视图上,如果 计算列或上的索引 这些观点不存在。