徵狀
假設您執行具有匯總和聯集的查詢 (例如:COUNT WITH GROUP BY) 在 SQL Server 中已篩選索引的資料表上,該資料表是做為遠端伺服器,且使用者沒有 VIEW DEFINITION 許可權。 在此情境中,連結伺服器會將篩選的索引視為完整的唯一索引,而查詢會返回不正確的結果。
其他相關資訊
當您執行遠端查詢時,連結的伺服器程式會使用索引中繼資料來優化查詢。 當您沒有查詢之資料庫的 VIEW DEFINITION 許可權時,中繼資料不會指出索引是篩選的索引,而查詢最佳化工具會認為索引是完整的唯一索引。 當您沒有 VIEW DEFINITION 許可權供查詢最佳化工具考慮時,此修正程式會修正篩選索引的索引中繼資料。
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
解決方案
此問題在 SQL Server 的下列累積更新中已經修正:
-
SQL Server 2017 的累積更新 22https://support.microsoft.com/help/4577467
-
SQL Server 2016 SP2 的累積更新 15https://support.microsoft.com/help/4577775
注意:此修正程式應適用于遠端連結伺服器。
關於 SQL Server 的累積更新:
SQL Server 的每個新累積更新都包含所有 Hotfix,以及上一個累積更新中包含的所有安全性修正。 查看 SQL Server 的最新累積更新:
因應措施
若要解決此問題,請嘗試下列其中一種方法:
-
移除篩選的索引。
-
將視圖定義授予使用者。 例如:將 VIEW 定義授予test_user;
參考
了解 Microsoft 用來說明軟體更新的術語。