SQL Server error "Xml data type is not supported in distributed queries" and workaround for it

Recently while working with data migration,got an error while running a following query where Server2 has beed added as linked server.

SELECT 
* 
FROM Server1.Database1.dbo.Table1 
WHERE Column1 NOT IN
(SELECT Column1 FROM Server2.Database2.dbo.Table1)
GO

-- Error raised while run above query
"Xml data type is not supported in distributed queries. Remote object 'Server2.Database2.dbo.Table1' has xml column(s)."

Server2.Database2.dbo.Table1 objects has another column named 'column2' has xml datatype and we have not used it anywhere in query. We used 'column1' of that table only and it has not xml datatype, even it has raised error. For the solution to avoid such error i have revised query as following.

 

SELECT 
* 
FROM Server1.Database1.dbo.Table1 
WHERE Column1 NOT IN
    (
    SELECT
    	  *
    FROM
    OPENQUERY(Server2,'
    			SELECT 
    			Column1
    			FROM Database2.dbo.Table1'
    		) linked
    )


这是网上查到的资料
根据这个,我先把xml转化成nvarchar, 在转回去变成xml

SELECT top 100 [Internal Database ID],[Internal Database Search ID],[Watch List Code],[Watch List Description], CONVERT(xml, CAST([Watch List Record Detail] as nvarchar(max))) [Watch List Record Detail] FROM OPENQUERY( [172.16.4.169] ,
'SELECT top 100 [Internal Database ID], [Internal Database Search ID],[Watch List Code],[Watch List Description], CAST([Watch List Record Detail] as nvarchar(max)) [Watch List Record Detail] FROM [VeridocsECCM].[dbo].[VML_View_WatchListHits]')

posted @ 2015-06-16 16:10  facial  阅读(935)  评论(0编辑  收藏  举报