2011-09-08 53 views
0

是可能的嗎?如果是,如何?在索引視圖中使用多語句視圖

這裏的錯誤消息試圖創建它,當我得到: 無法對視圖「視圖名稱」創建索引,因爲它引用了內聯或多語句表值函數「函數名」。考慮在視圖定義中手動擴展函數定義,或者不索引視圖。

+0

不,這是不可能的。即使在單個語句查詢中可以在索引視圖中使用它們之前,也有許多限制。你的multistatement tvf做什麼? –

+0

請參閱[本文](http://technet.microsoft.com/en-us/library/cc917715.aspx#XSLTsection127121120120)的「查看限制」一節以獲取索引視圖中不允許的內容。 –

回答

0

看看這個名單,並確定你的觀點是否通過了所有檢查點:

  • 的ANSI_NULLS和QUOTED_IDENTIFIER選項被執行CREATE VIEW語句時必須已設置爲ON 。 OBJECTPROPERTY 函數通過ExecIsAnsiNullsOn或 ExecIsQuotedIdentOn屬性報告此視圖。

    對於執行 所有創建 視圖引用的表的CREATE TABLE語句,ANSI_NULLS選項必須已設置爲ON。

    視圖不能引用任何其他視圖,只能引用基表。

    視圖引用的所有基表必須與視圖位於相同的數據庫 中,並且與視圖具有相同的所有者。

    視圖必須使用SCHEMABINDING選項創建。 Schema 綁定將視圖綁定到基礎基表的模式。

    視圖中引用的用戶定義的功能必須已創建 與SCHEMABINDING選項

    表和用戶定義的函數必須在視圖中由兩部分名稱 引用。一部分,三部分和四部分名稱不允許使用 。

    視圖中表達式引用的所有函數必須是確定性的 。函數OBJECTPROPERTY 的IsDeterministic屬性報告用戶定義的函數是否具有確定性。 有關更多信息,請參見確定性和不確定性 函數。

來源:here.

+0

不確定你在使用什麼原理來粗體顯示文本?相關位肯定是**視圖不能引用任何其他視圖,只有基表。** –