应用对象
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 类型数据的记录插入表中。

在此方案中,语句失败。 此外,你还会收到以下错误消息:

链接服务器“LinkServerName ”的 OLE DB 访问接口“SQLNCLI10”返回消息“多步骤 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 Service Pack 2 获取此累积更新包的详细信息,请单击以下序列号以查看Microsoft知识库中的文章:

2754552 SQL Server 2008 R2 Service Pack 2 的累积更新包 3 注意 由于内部版本是累积的,因此每个新修补程序版本都包含所有修补程序和以前的 SQL Server 2008 R2 Service Pack 2 修补程序版本中包含的所有安全修补程序。 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2730301 SQL Server 2008 R2 Service Pack 2 发布后发布的SQL Server 2008 R2 版本

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

解决方法

若要解决此问题,请使用以下方法之一:

  • 在 语句中将 DATETIME 类型数据强制转换为 SMALLDATETIME 类型。

  • 在链接服务器上将 SMALLDATETIME 类型列更改为 DATETIME 类型。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。