KB2989704 - 修正:當資料表在 SQL Server 中有非 DBO 結構描述時,sys.column_store_segments檢視中的某些資料行會顯示 NULL 值

套用到
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

症狀

假設您在 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 產品中的問題。