簡體   English   中英

ANSI_NULLS和QUOTED_IDENTIFIER行為

[英]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_NULLSQUOTED_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_NULLQUOTED_IDENTIFIERS切換為ON進行了很大的更改,並確保未在任何地方將它們OFF 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM