链接的SQL Server在转换数据类型DBTYPE_DBTIMESTAMP时出错

时间:2009-11-18 21:54:13

标签: sql-server-2005

我有一个SQL Server 2005,它有一个“链接服务器”到另一个SQL Server 2005.

当我针对链接服务器在其中一个表上运行简单查询时:

SELECT    TOP 10 [Pat_Id]
FROM   [Prod].[PIS].[dbo].[W_PATIENT]

发生此错误:

Msg 8114, Level 16, State 8, Line 1
Error converting data type DBTYPE_DBTIMESTAMP to datetime.
Msg 8114, Level 16, State 8, Line 1
Error converting data type DBTYPE_DBTIMESTAMP to datetime.

但是,当我使用OPENQUERY时,它可以工作:

SELECT * FROM OPENQUERY([Prod], 'SELECT TOP 10 [Pat_Id] FROM [PIS].[dbo].[W_PATIENT]')

W_PATIENT表没有任何'TIMESTAMP'类型的字段。它确实有5个DATETIME字段。

还要注意我可以使用DATETIME值查询其他表而没有问题。问题集中在W_PATIENT表上。

2 个答案:

答案 0 :(得分:1)

是否有可能某些DATETIME字段有“错误的条目”,超出范围等。例如,如果其中一个实际上是一个内部带有“垃圾”的字符串? 在远程服务器上执行打开查询,只返回结果;使用select时,数据会被传输,因此会应用数据转换。

我会考虑在w_patient表上进行一些数据分析。如果您有SQL Server 2008,SSIS中有一个数据分析任务,但您也可以找到其他工具来检查数据质量。

答案 1 :(得分:0)

就我而言,在 MySQL 方面,有一些日期值为 0000-00-00 00:00:00(默认),但无法在 MSSQL 上转换为 DateTime2。如果相应地配置了 NO_ZERO_DATE,MySQL 允许此值。

我必须将这些零值更新为 DateTime2 最小值才能使其正常工作。