[英]Why must QUOTED_IDENTIFIER be on for the whole db if you have an indexed view?
昨天,我在MSSQL 2008數據庫中的視圖上添加了一些索引。 之后,似乎所有存儲過程都需要在QUOTED_IDENTIFIER設置為ON的情況下運行,即使那些不使用相關視圖的存儲過程也是如此。
為什么會這樣呢? 這是我可以在數據庫上配置的東西,還是必須更新所有存儲過程以將QUOTED_IDENTIFIER設置為ON? 我認為這對於不使用視圖的存儲過程是必需的,這很奇怪。
這些存儲過程是否與視圖所基於的基表相關? 引用創建索引視圖 :
創建聚集索引之后,任何試圖修改視圖的基礎數據的連接還必須具有創建索引所需的相同選項設置。 如果執行該語句的連接沒有正確的選項設置,則SQL Server會生成錯誤並回滾所有將影響視圖結果集的INSERT,UPDATE或DELETE語句。 有關更多信息,請參見影響結果的SET選項。
而且,當您考慮它時,這很明顯-每當您觸摸這些基表時,都可能會更新視圖的內容,因此您繼承了與創建索引時相同的職責。
您可以在多個級別上設置默認值:
連接到服務器后,任何應用程序都可以通過執行SET語句來顯式覆蓋任何默認設置。 SET語句將覆蓋所有先前的設置,並且可用於在應用程序運行時動態地打開和關閉選項。 選項設置僅適用於當前連接會話。
OLE DB和ODBC應用程序可以通過在連接字符串中指定選項設置來指定在連接時有效的選項設置。 選項設置僅適用於當前連接會話。
通過使用控制面板中的ODBC應用程序或ODBC SQLConfigDataSource函數為SQL Server ODBC數據源指定的SET選項。
數據庫的默認設置。 您可以通過使用ALTER DATABASE或SQL Server Management Studio中的對象資源管理器來指定這些值。
服務器的默認設置。 您可以通過使用SQL Server Management Studio中的sp_configure或對象資源管理器來設置名為用戶選項的服務器配置選項,來指定這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.