我需要将我的中央数据库中的某些记录发送到子目录以用于业务目的。我们在VS2013中使用datacompare功能。但它需要很多资源。使用set运算符:除了仅发送主db中存在的记录而不发送子数据库。我使用了一个链接服务器:INSERT INTO Person(FullName,[photo],[gender],[receiptNo],[Status],[DateCreated]) 选择顶部(1000) 全名,[照片],[性别],[receiptNo],[状态],[dateCreated会]
这
Mylinkservername.Mydatabasename.dbo.Person
除了
选择
全名,[照片],[性别],[receiptNo],[状态],[dateCreated会]
来自人
但是我遇到了这个错误:The image data type cannot be selected as DISTINCT because it is not comparable.
没有图像的表格,它很有效。我做了很多研究,但我似乎可以很好地解决我的问题
这是我的代码:
`INSERT INTO Person(FullName,[photo],[gender],[receiptNo],[Status],[DateCreated])
Select top(1000)
FullName,[photo],[gender],[receiptNo],[Status],[DateCreated]
from
Mylinkservername.Mydatabasename.dbo.Person
EXCEPT
SELECT
FullName,[photo],[gender],[receiptNo],[Status],[DateCreated]
From Person`
答案 0 :(得分:0)
我只是从MSDN中发现设置操作除了不支持图像:
The query specification or expression cannot return xml, text, ntext, image, or nonbinary CLR user-defined type columns because these data types are not comparable
答案 1 :(得分:0)
首先,不推荐使用image
数据类型,不应在新开发中使用。请转而转换为nvarchar(max)
或varbinary(max)
。 http://msdn.microsoft.com/en-us/library/ms187993.aspx
MSDN声明" EXCEPT返回左输入查询中不是由右输入查询输出的不同行" http://msdn.microsoft.com/en-us/library/ms188055.aspx
因为你无法比较图像,所以你可以改为对子数据库Person表进行LEFT连接,并检查sub中没有记录的位置。
INSERT INTO Person(FullName,[photo],[gender],[receiptNo],[Status],[DateCreated])
Select top(1000)
l.FullName,l.[photo],l.[gender],l.[receiptNo],l.[Status],l.[DateCreated]
from
Mylinkservername.Mydatabasename.dbo.Person l --linked server query
LEFT JOIN Person p --local "sub" database table
ON l.receiptNo = p.receiptNo --or whatever the primary key column(s) is/are
WHERE p.receiptNo is null --not found in local Person table