我有一个SQL Server 2005中,有一个“链接服务器”到另一个SQL Server 2005的链接的SQL Server有误差与转换数据类型DBTYPE_DBTIMESTAMP
当我对链接表的一个运行一个简单的查询服务器:
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表上。
您是否尝试将[Pat_Id]转换为二进制文件(8)?这相当于TIMESTAMP,看看它是否有效很有意思。 – ajdams 2009-11-18 22:50:52
好想法。在您的评论之前,我尝试将DATETIME字段投射到TIMESTAMP,并且如果我本地连接到Prod数据库,则工作正常。我只是使用BINARY(8)的建议,也工作。我希望通过单独投射每个DATETIME,我都能够识别具有不良数据的那个,但是没有运气。 – jacksonakj 2009-11-19 16:47:29
你确定你的链接服务器设置正确吗?这个查询产生了什么:SELECT product,provider FROM sys.servers WHERE name ='Prod'; – 2009-11-19 02:06:02