2011-05-05 62 views
4

我的腳本有問題SQL,請幫幫我。SQL Server - 使用帶引號的標識符ON和OFF和Getdate()

例:

我有一個插入statments:

INSERT INTO CUSTOMER (Code, Date) VALUES (1, GETDATE()); 

當我執行此插入,retuns後續消息:

「消息1934年,級別16,狀態1,服務器 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行(S)的影響)

什麼關係betwhen GETDATE()QUOTED IDENTIFIER

爲什麼我需要使用引用標識符在這種情況下?

我相信這是因爲getdate。爲什麼?

謝謝。

恩裏克Melicio

+1

'CUSTOMER'是表格還是視圖? – 2011-05-05 18:59:23

回答

3

恩裏克,

你得到的錯誤是不相關的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,UPDATE 這些選項的任意一個,DELETE,DBCC CHECKDB和DBCC 對索引視圖CHECKTABLE行動或 表上計算 列的索引將失敗。 SQL Server將 提出錯誤,列出所有錯誤設置的選項 。此外,SQL服務器將在這些表或索引視圖上處理SELECT語句 ,就好像 計算列上的索引或 視圖不存在一樣。

+0

謝謝AJ01,我的腳本現在好了。 – 2011-05-05 21:28:07

相關問題