![](/img/trans.png)
[英]ANSI_NULLS and QUOTED_IDENTIFIER killed things. What are they for?
[英]ANSI_NULLS and QUOTED_IDENTIFIER Behavior
我有一個觀點:
create view dbo.vMainTable
as
select MT.* from dbo.Table1 T1 with(index(dbo_Table1_UQ))
inner loop join dbo.MainTable MT with(index(dbo_MainTable_PK))
on T1.ID = MT.Table1_ID
go
查詢視圖時,如果將ANSI_NULLS
和QUOTED_IDENTIFIERS
設置為OFF
則會出現以下錯誤。
Query processor could not produce a query plan because of the hints
defined in this query. Resubmit the query without specifying any hints and
without using SET FORCEPLAN.
將它們切換為ON
可消除錯誤。 在此特定視圖中我缺少什么?
編輯:在許多地方,我們的某些開發人員完成了column_name = NULL
而不是column_name IS NULL
,如果我將它們都設置為ON
,則會斷開。 我一直在尋找可以解決這種情況的解決方案。
with(index(dbo_Table1_UQ))
和with(index(dbo_MainTable_PK))
構造是提示 (就像在WITH(...)
看到的其他內容一樣)
SQL Server告訴您,如果將ANSI_NULLS
和/或QUOTED_IDENTIFIERS
設置為OFF
,則必須刪除with(index(dbo_Table1_UQ))
和with(index(dbo_MainTable_PK))
。
提示通常對於查詢/視圖不是必需的,並且可以插入以優化查詢的性能。 您可能會忽略它們而發現性能有所提高,但這必須根據具體情況進行評估。 如果在SSMS中測試查詢並顯示執行計划和查詢性能,則可以自己評估這些WITH()
語句是否必要。
正如@Damien_The_Unbeliever所建議的那樣,我對將所有腳本的ANSI_NULL
和QUOTED_IDENTIFIERS
切換為ON
進行了很大的更改,並確保未在任何地方將它們OFF
。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.