Microsoft 會以一個可供下載的檔案形式發佈 Microsoft SQL Server 2008 和 Microsoft SQL Server 2008 R2 修正程式。 由於修正程式是累積的,因此每個新版本都包含先前的 SQL Server 2008 或 SQL Server 2008 R2 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。
症狀
請考慮以下案例:
您在 SQL Server 2008 或 SQL Server 2008 R2 資料庫中建立包含不確定計算資料行的資料表。 例如,您可以執行下列陳述式來建立包含不確定計算資料行的資料表:CREATE TABLE [dbo]。[t1] (
[出生日期]DATE,
[年齡]AS (FLOOR (DATEDIFF (DAY,[DateOfBirth],GETDATE () ) / (365.0) ) ) ) GO 附註 在此陳述式中,GETDATE 函數是不確定的。您可以執行 sp_createstats 預存程序來改善效能。
注意 sp_createstats 預存程序會為資料庫中任何符合資格的資料行建立單欄統計資料
在此案例中,sp_createstats預存程序會失敗。 因此,可能尚未建立某些合格資料欄位的統計資料。 此外,您收到下列錯誤訊息:
注意
Msg 2729, Level 16, State 1, Line 1
'dbo.t1' 資料表中的 'Age' 資料行無法用於索引或統計資料,或是做為磁碟分割索引鍵,因為它是不確定的。
原因
發生此問題的原因是 sp_createstats 預存程序不會略過不確定的計算資料行。
解決方式
累積更新資訊
SQL Server 2008 Service Pack 1
此問題的修正程式最初在 SQL Server 2008 Service Pack 1 的累積更新 11 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2413738 SQL Server 2008 Service Pack 1 的累積更新套件 11
注意:由於這些組建是累積的,因此每個新發行的修正程式都包含先前的 SQL Server 2008 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
970365 發行 SQL Server 2008 Service Pack 1 之後所發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 會針對特定 SQL Server Service Pack 建立 Hotfix。 您必須將 SQL Server 2008 Service Pack 1 Hotfix 套用至 SQL Server 2008 Service Pack 1 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。
SQL Server 2008 Service Pack 2
此問題的修正程式最初在 SQL Server 2008 Service Pack 2 的累積更新 1 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2289254 SQL Server 2008 Service Pack 2 的累積更新 1 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些都包含在上一個 SQL Server 2008 修正程式版本中。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 發行 SQL Server 2008 Service Pack 2 之後所發行的 SQL Server 2008 組建
SQL Server 2008 Service Pack 2
此問題的修正程式最初在 SQL Server 2008 Service Pack 2 的累積更新 2 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2467239 SQL Server 2008 Service Pack 2 累積更新套件 2 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些修正程式都包含在上一個 SQL Server 2008 修正程式版本中。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 SQL Server 2008 Service Pack 2 發行之後所發行的 SQL Server 2008 組建Microsoft SQL Server會為特定 SQL Server Service Pack 建立 Hotfix。 您必須將 SQL Server 2008 Service Pack 2 Hotfix 套用至 SQL Server 2008 Service Pack 2 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。
SQL Server 2008 R2
此問題的修正程式最初在累積更新 4 中發行。 如需有關如何取得 SQL Server 2008 R2 的累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
2345451 SQL Server 2008 R2 的累積更新套件 4 注意:由於組建是累積的,因此每個新發行的修正程式都包含先前的 SQL Server 2008 R2 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 在 SQL Server 2008 R2 發行之後所發行的 SQL Server 2008 R2 組建 (機器翻譯)
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
如需有關決定性和非決定性函數的詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站:
有關確定性和非確定函數的一般資訊如需有關 sp_createstats 預存程序的詳細資訊,請造訪下列 MSDN 網站:
關於 “sp_createstats” Transact-SQL 預存程序的一般資訊如需有關計算資料行的詳細資訊,請造訪下列 MSDN 網站:
關於計算資料行的一般資訊如需有關 SQL Server 累加式服務模型的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
935897 來自 SQL Server 團隊之可傳遞解決回報問題的 Hotfix 的累加服務模型 (機器翻譯)
如需有關 SQL Server 更新命名架構的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
822499 Microsoft SQL Server 軟體更新套件的新命名架構如需有關軟體更新術語的詳細資訊,請按一下下面的文章編號,檢視「Microsoft知識庫」中的文章:
824684 描述Microsoft軟體更新所使用的標準術語說明