Sql-Server-2008
SELECT 失敗,因為以下 SET 選項的設置不正確:‘QUOTED_IDENTIFIER’
這個說法有什麼問題?為什麼它給出以下錯誤消息
錯誤資訊:
SELECT 失敗,因為以下 SET 選項的設置不正確:“QUOTED_IDENTIFIER”。驗證 SET 選項對於索引視圖和/或計算列上的索引和/或過濾索引和/或查詢通知和/或 XML 數據類型方法和/或空間索引操作是否正確。
陳述
SELECT ISNULL(STUFF((SELECT ', ' + u.TITLE + ' ' + u.FirstNAME + ' ' + LastNAME [text()] FROM table1 c INNER JOIN table2 u ON c.user = u.user AND c.Task = @task AND c.Type = 'Assign' FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,2,' ') ,'') UNAMESLIST
如SET QUOTED_IDENTIFIER (Transact-SQL)中所述
呼叫 XML 數據類型方法時,SET QUOTED_IDENTIFIER 必須為 ON。
一個簡單的測試
set quoted_identifier off DECLARE @xmlRecords XML SET @xmlRecords = '<records><record orderId="1" refCode="1234"></record></records>' SELECT records.record.value('(@orderId)[1]', 'INT') AS orderId FROM @xmlRecords.nodes('/records/record') records(record)
消息 1934,級別 16,狀態 1,第 8 行 SELECT 失敗,因為以下 SET 選項的設置不正確:‘QUOTED_IDENTIFIER’。驗證 SET 選項是否適用於索引視圖和/或計算列上的索引和/或查詢通知和/或 xml 數據類型方法。
您正在使用
FOR XML PATH
SET QUOTED_IDENTIFIER off DECLARE @T TABLE (id VARCHAR(5),col1 XML) INSERT INTO @t (id,col1) VALUES ('1','<node1>one</node1>') SELECT ISNULL(STUFF(( SELECT ', ' + id FROM @t FOR XML PATH('') ,TYPE ).value('.', 'NVARCHAR(MAX)'), 1, 2, ' '), '') UNAMESLIST
消息 1934,級別 16,狀態 1,第 8 行 SELECT 失敗,因為以下 SET 選項的設置不正確:‘QUOTED_IDENTIFIER’。驗證 SET 選項是否適用於索引視圖和/或計算列上的索引和/或查詢通知和/或 xml 數據類型方法。