日期:2014-05-17  浏览次数:20730 次

一个比较头疼的问题。
现在在使用c#做SQL Server同步工具,使用了
Insert into table select * from [192.168.0.74].[p].[dbo].[table]语句

使用了链接服务器,现在由于表的数目多,数据库,所以,上述语句也是动态的。

现在有部分表里有些xml类型的列,导致运行上述语句的时候报:

分布式查询不支持xml数据类型。远程“[192.168.0.74].[p].[dbo].[table]”包含xml列。


请教高手,有何办法解决。

------解决方案--------------------
用xquery提取出来行不行?
------解决方案--------------------
1、针对XML列:将XML列转换成varchar(max)或nvarchar(max)

2、针对XML文件:使用OPENROWSET
------解决方案--------------------
你反正都用的是动态语句,那就继续拼SQL嘛。

比如针对一个表,从sys.columns中取出列名(name)、数据类型(system_type_id),看到system_type_id=241的,就在外面套上cast(colname as nvarchar(max)),不就可以了么