當(dāng) SET QUOTED_IDENTIFIER 為 ON 時(shí),標(biāo)識(shí)符可以由雙引號(hào)分隔,而文字必須由單引號(hào)分隔。當(dāng) SET QUOTED_IDENTIFIER 為 OFF 時(shí),標(biāo)識(shí)符不可加引號(hào),且必須符合所有 Transact-SQL 標(biāo)識(shí)符規(guī)則。有關(guān)詳細(xì)信息,請(qǐng)參閱標(biāo)識(shí)符。文字可以由單引號(hào)或雙引號(hào)分隔。
當(dāng) SET QUOTED_IDENTIFIER 為 ON(默認(rèn)值)時(shí),由雙引號(hào)分隔的所有字符串都被解釋為對(duì)象標(biāo)識(shí)符。因此,加引號(hào)的標(biāo)識(shí)符不必符合 Transact-SQL 標(biāo)識(shí)符規(guī)則。它們可以是保留關(guān)鍵字,并且可以包含 Transact-SQL 標(biāo)識(shí)符中通常不允許的字符。不能使用雙引號(hào)分隔文字字符串表達(dá)式,而必須用單引號(hào)括住文字字符串。如果單引號(hào) (') 是文字字符串的一部分,則可以由兩個(gè)單引號(hào) (") 表示。當(dāng)對(duì)數(shù)據(jù)庫中的對(duì)象名使用保留關(guān)鍵字時(shí),SET QUOTED_IDENTIFIER 必須為 ON。
當(dāng) SET QUOTED_IDENTIFIER 為 OFF 時(shí),表達(dá)式中的文字字符串可以由單引號(hào)或雙引號(hào)分隔。如果文字字符串由雙引號(hào)分隔,則可以在字符串中包含嵌入式單引號(hào),如省略號(hào)。
當(dāng)在計(jì)算列或索引視圖上創(chuàng)建或更改索引時(shí),SET QUOTED_IDENTIFIER 必須為 ON。如果 SET QUOTED_IDENTIFIER 為 OFF,則計(jì)算列或索引視圖上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。有關(guān)計(jì)算列的索引視圖和索引所必需的 SET 選項(xiàng)設(shè)置的詳細(xì)信息,請(qǐng)參閱 SET (Transact-SQL) 中的“使用 SET 語句時(shí)的注意事項(xiàng)”。
在進(jìn)行連接時(shí),SQL 本機(jī)客戶端 ODBC 驅(qū)動(dòng)程序和 SQL Server 的 SQL Native Client OLE DB Provider 自動(dòng)將 QUOTED_IDENTIFIER 設(shè)置為 ON。這可以在 ODBC 數(shù)據(jù)源、ODBC 連接特性或 OLE DB 連接屬性中進(jìn)行配置。對(duì)來自 DB-Library 應(yīng)用程序的連接,SET QUOTED_IDENTIFIER 默認(rèn)設(shè)置為 OFF。
創(chuàng)建表時(shí),即使此時(shí)將 QUOTED IDENTIFIER 選項(xiàng)設(shè)置為 OFF,該選項(xiàng)在表的元數(shù)據(jù)中仍始終存儲(chǔ)為 ON。
創(chuàng)建存儲(chǔ)過程時(shí),將捕獲 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 設(shè)置,并用于該存儲(chǔ)過程的后續(xù)調(diào)用。
在存儲(chǔ)過程內(nèi)執(zhí)行 SET QUOTED_IDENTIFIER 時(shí),其設(shè)置不更改。
當(dāng) SET ANSI_DEFAULTS 為 ON時(shí),將啟用 SET QUOTED_IDENTIFIER。
SET QUOTED_IDENTIFIER 還與 ALTER DATABASE 的 QUOTED_IDENTIFER 設(shè)置相對(duì)應(yīng)。有關(guān)數(shù)據(jù)庫設(shè)置的詳細(xì)信息,請(qǐng)參閱 ALTER DATABASE (Transact-SQL) 和設(shè)置數(shù)據(jù)庫選項(xiàng)。
SET QUOTED_IDENTIFIER 是在分析時(shí)進(jìn)行設(shè)置的。在分析時(shí)進(jìn)行設(shè)置意味著:SET 語句只要出現(xiàn)在批處理或存儲(chǔ)過程中即生效,與代碼執(zhí)行實(shí)際上是否到達(dá)該點(diǎn)無關(guān);并且 SET 語句在任何語句執(zhí)行之前生效。