您目前已離線,請等候您的網際網路重新連線

在 Microsoft SQL Server 2005 中執行 DBCC CHECKTABLE 陳述式或 DBCC CHECKDB 陳述式時,FIX: 錯誤訊息: 「 資料行 '<columnname>' 值已超出資料型別 'float' 的範圍"

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:942904
錯誤: # 50001847 (SQL Hotfix)
Microsoft 為一個可下載檔案散佈 Microsoft SQL Server 2005 的修正程式。因為修正程式是累積,每個新版本包含所有 Hotfix 及先前的 SQL Server 2005 隨附所有安全性修正程式都修正發行。
徵狀
在 Microsoft SQL Server 2005 中當您執行 DBCC CHECKTABLE 陳述式或 DBCC CHECKDB 陳述式來執行一個資料表上的實體一致性檢查會收到錯誤訊息類似下列的錯誤訊息:
DBCC 結果 '<tablename>'。
訊息 2570,層級 16 狀態 3 行 1 的頁面 (1:73) 插槽 2 物件 ID 2073058421 索引識別碼 1 識別碼 72057594038321152 配置單位識別碼 72057594043301888 (型別 」 中資料列的資料 」) 的磁碟分割中。資料行 <columnname>"值超出資料型別"float"的範圍。 要合法的值更新資料行。
附註此錯誤] 訊息中 TableName 表示該資料表的實際名稱,而 ColumnName 表示資料行的實際名稱。
發生的原因
INSERT 陳述式或 UPDATE 陳述式會傳遞超出範圍是浮點數資料型別資料行的資料行的值,就會發生這個問題。如果 INSERT 陳述式或 UPDATE 陳述式並不會傳送為常值的數值插入的或可更新,可能就會發生這種情況。比方說如果您使用變數來傳遞無效的值,INSERT 陳述式或 UPDATE 陳述式,可能就會發生這個問題。
解決方案
這個問題的修正程式先於累計更新 4 發行。如需有關如何取得此累積更新套件的 SQL Server 2005 Service Pack 2 的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
941450SQL Server 2005 Service Pack 2 的累積更新套件 4
附註因為組建是累計,每個新的修正程式版本包含所有 Hotfix 及先前的 SQL Server 2005 隨附所有安全性修正程式都修正發行。Microsoft 建議您考慮安裝最新的修正程式發行版本包含此 Hotfix。如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
937137SQL Server 2005 會建置 SQL Server 2005 Service Pack 2 已發行之後所發行
Microsoft SQL Server 2005 的 Hotfix 會建立特定的 SQL Server Service Pack。您必須將 SQL Server 2005 Service Pack 2 Hotfix 套用至的 SQL Server 2005 Service Pack 2 安裝。預設狀況下,在 SQL Server Service Pack 中提供任何 Hotfix 包含在下一個 SQL Server Service Pack。

如需有關哪些檔案會變更,及資訊有關任何先決條件套用累積更新套件,包含此 「 Microsoft 知識庫 」 文件中所述的 Hotfix,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
941450SQL Server 2005 Service Pack 2 的累積更新套件 4
狀況說明
Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。
其他相關資訊
套用此 Hotfix 之後,SQL Server 不會阻止您從是浮點數資料型別資料行的資料行中輸入無效值。套用此 Hotfix 之後,無效的值會不會指示為錯誤 DBCC CHECKTABLE 陳述式中或在 DBCC CHECKDB 陳述式中。

如果要重現問題的步驟

  1. 開啟 SQL Server 管理 Studio,然後連線至 SQL Server 2005 的執行個體。
  2. 建立新的查詢並執行下列陳述式:
    create table tb1 (c float)godeclare @f floatset @f=1E-307*0.01insert tb1 values (@f)goselect * from tb1go
    請注意下列無效的值已經插入到資料表:
    1e 309
  3. 執行下列陳述式:
    DBCC CHECKTABLE ('tb1')go
    您收到 < 徵狀 > 一節將說明的錯誤訊息。
  4. 執行下列陳述式:
    insert tb1 values (1E-309)go
    您收到下列訊息的取決於 SQL Server 組建其中:

    訊息 1
    警告: 浮點值 '1E-309' 太小。它會被解譯為 0。
    訊息 2
    將浮點值 '1E-309' 超出電腦表示 (8 個位元組) 的範圍。
    在這種情況下無效的值不是插入資料表因為常值當作傳送值。
  5. 執行下列陳述式來檢查插入在步驟 4 中資料表的值:
    select * from tb1go
    注意到 0 便插入而不是而無效的值。
参考
如需有關如何疑難排解 DBCC 錯誤 2750 (資料淨化) 的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
923247疑難排解在 SQL Server 2005 中的 DBCC 錯誤 2570
如更多有關清單的組建,都可以使用 SQL Server Service Pack 2 之後,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
937137SQL Server 2005 會建置 SQL Server 2005 Service Pack 2 已發行之後所發行
如更多有關累加式的維修模型為 SQL Server,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
935897累加式的維修模型是可以從 SQL Server 小組來傳遞回報問題的 Hotfix
如需有關如何取得 SQL Server 2005 Service Pack 2 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
913089如何取得最新的 Service Pack,SQL Server 2005 的
如需有關新功能與 SQL Server 2005 Service Pack 2 的改進的詳細資訊,請造訪下列 Microsoft 網站:如 SQL Server 更新命名的結構描述的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
822499Microsoft SQL Server 軟體更新套件的新命名結構描述
如需有關軟體更新術語的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

警告:本文為自動翻譯

內容

文章識別碼:942904 - 最後檢閱時間:11/14/2007 19:40:35 - 修訂: 2.4

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems

  • kbmt kbsql2005engine kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced KB942904 KbMtzh
意見反應
var Ctrl = ""; document.write("