Sql-Server-2008

SELECT 失敗,因為以下 SET 選項的設置不正確:‘QUOTED_IDENTIFIER’

  • May 3, 2021

這個說法有什麼問題?為什麼它給出以下錯誤消息

錯誤資訊:

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 數據類型方法。

引用自:https://dba.stackexchange.com/questions/233471