症狀
假設您在 Microsoft SQL Server 2012 或 SQL Server 2014 中具有非 dbo 結構描述的資料表具有選取權限。 當您從sys.column_store_segments檢視查詢時,資料行 has_nulls、base_id、magnitude、min_data_id、max_data_id 及 null_value 會顯示 NULL 值。
注意
sys.column_store_segments檢視會使用下列功能來執行安全性檢查:
HAS_PERMS_BY_NAME ( securable , securable_class , permission [ , sub-securable ] [ , sub-securable_class ] )除非使用者具有選取權限,否則資料行 has_nulls、base_id、magnitude、min_data_id、max_data_id及 null_value 會傳回 NULL 值。
原因
之所以發生問題,是因為檢視的安全性檢查不會考慮非 DBO 架構。 因此,即使您擁有具有非 dbo 結構描述的資料表的 SELECT 權限,您仍會從檢視收到 NULL 值。
解決方式
此問題已先在下列 SQL Server 累積更新中修正。
SQL Server 2012 SP2 的累積更新 2 /zh-tw/help/2983175
SQL Server 2012 SP1 的累積更新 12 /zh-tw/help/2991533
SQL Server 2014 累積更新 3 /zh-tw/help/2984923
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。