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