Symptoms
Consider the following scenario:
-
You have a linked server in Microsoft SQL Server 2008 R2.
-
There is a table on the linked server that has a SMALLDATETIME type column.
-
You run an INSERT or INSERT INTO statement to insert a record that contains DATETIME type data into the table.
In this scenario, the statement fails. Additionally, you receive the following error message:
OLE DB provider "SQLNCLI10" for linked server "LinkServerName " returned message "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.".
Msg 7344, Level 16, State 1, Line 1The OLE DB provider "SQLNCLI10" for linked server "LinkServerName" could not INSERT INTO table "TableName" because of column "ColumnName". Conversion failed because the data value overflowed the data type used by the provider.Cause
This issue occurs because of a data type mapping problem in SQL Server.
Resolution
Cumulative update information
SQL Server 2008 R2 Service Pack 2
The fix for this issue was first released in Cumulative Update 3. For more information about how to obtain this cumulative update package for SQL Server 2008 R2 Service Pack 2, click the following article number to view the article in the Microsoft Knowledge Base:
2754552 Cumulative update package 3 for SQL Server 2008 R2 Service Pack 2Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 Service Pack 2 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2730301 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 2 was released
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Workaround
To work around the issue, use one of the following methods:
-
Cast the DATETIME type data to the SMALLDATETIME type in the statement.
-
Change the SMALLDATETIME type column to the DATETIME type on the linked server.