2009-08-07 50 views
27

我遇到更新存儲過程問題。錯誤是更新失敗,因爲以下SET選項具有不正確的設置:'QUOTED_IDENTIFIER'

更新失敗,因爲以下SET選項具有不正確的設置:'QUOTED_IDENTIFIER'。驗證SET選項是否適用於索引視圖 和/或計算列和/或查詢通知和/或xml數據類型方法的索引。

不幸的是,該表沒有索引視圖/計算列/查詢通知。這個SP在過去幾天運行良好,因爲今天一直在返回這個錯誤。

有什麼建議可以幫助找出問題嗎?

注意:如果我將quoted_identifier設置爲ON並重新運行create proc,問題現在將得到解決,但我想先了解是什麼引發了這個問題。

+0

你能特別指出哪些設置? – balalakshmi 2009-08-07 10:32:36

回答

2

我們無法通過關閉引用標識符來創建索引視圖。我只是試了一下,如果它關閉,SQL 2005會立即拋出一個錯誤:

無法創建索引。對象'SmartListVW'是在關閉以下SET選項的情況下創建的:'QUOTED_IDENTIFIER'。

正如gbn所說,重建索引必須是唯一的關閉方式。

我看過很多文章說它必須在創建視圖索引之前。否則,當插入,更新表時,你會得到一個錯誤,但是在這裏我可以直接得到錯誤,所以sql引擎不允許通過將其設置爲關閉來創建索引,根據這個msdn link

我也問過這裏一個類似的問題in stack較早前...

編輯

我關掉了全球queryexecution(編輯器)ANSI設置和運行在新的編輯器的腳本的索引,這時間也會拋出同樣的錯誤。所以很明顯,我們不能通過關閉quoted_identifier來在視圖上創建索引。

2

的幾點思考:

指標沒有得到重建?如果您使用DMO進行索引維護,則quoted_identifier不會始終保留。它是一個追蹤的繪畫,是一個特殊的問題是SQL Server 2000直到SP4左右。

不過,前段時間我也見過SQL Server 2005。

30

我需要添加

SET ANSI_NULLS, QUOTED_IDENTIFIER ON 

我所有的存儲特效編輯表格與計算列...(未在proc,而期間創建),以避免錯誤,像這樣:

SET ANSI_NULLS ON 

go 

SET QUOTED_IDENTIFIER ON 

go 

create proc dbo.proc_myproc 

... 
2

我遲到了這次派對,但有這個錯誤,並想分享它。

我們的問題是經常性的,但隨機,所以我們知道它不是一個對象被創建不正確。

我們終於在我們的Citrix服務器場中的一臺服務器上追蹤到ODBC連接。在該服務器上,所討論的ODBC已將其QUOTED_IDENTIFIERS關閉(取消選中)。在所有其他服務器上,它按預期進行了檢查。我們開啓了這個選項,問題立即解決了。

0

我今天在SSMS中運行存儲過程時出現了這個錯誤。斷開與服務器的連接並重新連接新會話解決了我的問題。我運行的SP從來沒有遇到過這個問題。

相關問題