我需要有人对以下专业知识:通过XML导出同步SQL Server数据
我建立了一个需要它,他们的.NET 1.1 WinForms应用程序之间同步30余台客户端的面向网络的系统。为了尽量减少为我们的理智的缘故,我们之间的互动,我建议使用XML,像这样
SELECT *
FROM table1
FOR XML AUTO, XMLDATA
需要说明的是,我需要的主键保持在源和目标数据库的之间的相同。有没有一种导入XML的优雅方式?每次有数据同步时,我不想编写丑陋的SQL来删除并重新创建表和关系。有没有办法通过ADO.NET或Entity Framework 3来告诉数据库“看,这是你的数据,请使用它而不是你现在拥有的”?
这里的导出XML的例子:
<taxGroup>
<Schema name="Schema29" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="taxGroup" content="empty" model="closed">
<AttributeType name="taxGroupId" dt:type="i8"/>
<AttributeType name="regionId" dt:type="i8"/>
<AttributeType name="description" dt:type="string"/>
<AttributeType name="percentage" dt:type="number"/>
<AttributeType name="exportNumber" dt:type="string"/>
<attribute type="taxGroupId"/>
<attribute type="regionId"/>
<attribute type="description"/>
<attribute type="percentage"/>
<attribute type="exportNumber"/>
</ElementType>
</Schema>
<taxGroup xmlns="x-schema:#Schema29" taxGroupId="38000001" regionId="1482000001" description="VAT" percentage="0.1400" exportNumber=""/>
<taxGroup xmlns="x-schema:#Schema29" taxGroupId="38000002" regionId="1482000001" description="VAT2" percentage="0.1700" exportNumber=""/>
</taxGroup>
注:两个DB的不必相互访问。传输是通过安全HTTPRequest。
更新2:Winforms应用程序使用SQL2000,这使得使用同步框架是不可能的,显然...
更新3:我们只是把它作为一个因为我被困不得不做的事情以这种方式。 .NET应用程序部署在各种第三方站点,每个站点都有一个单独的数据库副本并连接到Web应用程序的单独实例。它是一个经销商包,用于所有意图和目的:实体店面组件和在线商店组件。有些第三方拒绝从SQL2000升级。
您是否阅读过Microsoft Sync Framework? – goatshepard
我没有,但在你问之后。是的,它似乎天堂般,直到我读到sql2005R2或更高是必需的,并且客户端使用SQL2000。 –
不幸的是,客户端似乎期望您从头开始重新开发SQL复制或MS Sync。我会投入精力让他们升级,这将使他们花费更少,从长远来看更有利于他们。如果他们不同意,请确保他们清楚地明白他们正在向您付费重新发明轮子,并将您的时间成本与新的SQL Server许可证的成本进行比较。 – Pondlife