套用到
SQL Server 2008 R2 Standard SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise

徵兆

請試想下列案例:

  • 你有一台連結的 Microsoft SQL Server 2008 R2 伺服器。

  • 連結伺服器上有一個表格,欄位為 SMALLDATETIME 類型。

  • 你執行 INSERT 或 INSERT INTO 語句,將包含 DATETIME 類型資料的紀錄插入資料表。

在這種情況下,該陳述失敗。 此外,您收到下列錯誤訊息:

OLE DB 提供者「SQLNCLI10」對於連結伺服器「LinkServerName 」回傳訊息:「多步驟 OLE DB 操作產生錯誤。 檢查每個 OLE DB 狀態值(如果有的話)。 但沒有進行任何工作。」訊息 7344,第 16 層,狀態 1,第 1 行 連結伺服器「LinkServerName」的 OLE DB 提供者「SQLNCLI10」無法插入資料表「TableName」 ,因為欄位為「ColumnName」。 轉換失敗,因為資料值超出提供者所使用的資料型態。

原因

此問題是因為 SQL Server 中的資料型別映射問題所致。

解決方案

累積更新資訊

SQL Server 2008 R2 Service Pack 2

此問題的修正最初於累積更新 3 中釋出。 欲了解更多如何取得 SQL Server 2008 R2 服務包 2 累積更新套件的資訊,請點擊以下文章編號以瀏覽 Microsoft 知識庫中的文章:

2754552 SQL Server 2008 R2 服務包 2 的累積更新包 3 備註:由於建置是累積的,每個新修正版本都包含了先前 SQL Server 2008 R2 服務包 2 修正版本中包含的所有熱修補與安全修補。 我們建議您考慮套用包含此熱修正的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2730301 SQL Server 2008 R2 建置版本是在 SQL Server 2008 R2 服務包 2 發布之後推出的

狀態

Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。

因應措施 

要解決這個問題,請採用以下其中一種方法:

  • 將 DATETIME 類型資料鑄造成語句中的 SMALLDATETIME 類型。

  • 將連結伺服器上的 SMALLDATETIME 類型欄位改為 DATETIME 類型。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。