Sql-Server
由於“隱藏”統計資訊,Alter 列失敗
我正在嘗試將列數據類型從更改
datetime2
為datetimeoffset
. 我有數據庫所有者權限。每當我執行查詢時:
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 支持後,我設法解決了這個問題。
支持工程師的部分回答包括以下內容:
我查看了內部遙測,可以確認錯誤中列出的統計數據不存在。這可能是未正確清理的計算節點級統計資訊。
通過執行以下步驟,我能夠確認並解決此問題:
- 執行 CTAS 以創建表的副本
- 將前一個表重命名為不同的名稱(例如:),將新表重命名為原始表名
- 刪除舊表
之後,該
ALTER TABLE
聲明按預期工作。