Sql-Server

由於“隱藏”統計資訊,Alter 列失敗

  • April 13, 2021

我正在嘗試將列數據類型從更改datetime2datetimeoffset. 我有數據庫所有者權限。

每當我執行查詢時:

alter table dbo.<my-table>
alter column [TimeStamp] datetimeoffset

我收到以下錯誤消息:

統計資訊“Stat_a41cbd7f968a4cba86199c960f6f7c3a”取決於列“TimeStamp”。

ALTER TABLE ALTER COLUMN 時間戳失敗,因為一個或多個對象訪問此列。

但是,我的表中似乎不存在此統計資訊“Stat_a41cbd7f968a4cba86199c960f6f7c3a” sys.stats,這很奇怪。

是否有任何其他位置可以定義?

sys.stats編輯:名為“Stat_a41cbd7f968a4cba86199c960f6f7c3a”的條目中沒有一個條目。此外,除了自動統計之外,我從未定義過任何自定義統計。

聯繫 Azure 支持後,我設法解決了這個問題。

支持工程師的部分回答包括以下內容:

我查看了內部遙測,可以確認錯誤中列出的統計數據不存在。這可能是未正確清理的計算節點級統計資訊。

通過執行以下步驟,我能夠確認並解決此問題:

  1. 執行 CTAS 以創建表的副本
  2. 將前一個表重命名為不同的名稱(例如:),將新表重命名為原始表名
  3. 刪除舊表

之後,該ALTER TABLE聲明按預期工作。

引用自:https://dba.stackexchange.com/questions/269233