2010-09-14 25 views
0

我的团队计划使用Biztalk服务器2006.任务如下: -BizTalk是否可行用于生成夜间xml文件?

每晚从多个数据库中提取一组计划作业(基本上使用where子句运行的相同select查询大约20000个ID),并将其写入一个XML文件。

目前我们有c#winform,它对用户输入中的一个或多个Id做相同的操作。但客户不希望用户输入,而是希望在夜间运行一项工作,以便在早晨xml包含来自所有数据库的最新数据。

我们认为Biztalk是好的,因为我们需要良好的故障处理和数据丢失。也因为它对我们来说是一个很好的体验,因为我们从未使用过Biztalk。 (我们已经有一个许可证在同一部门的另一个项目)

请指教,Biztalk解决方案?

+0

Biztalk 2006?不是最新的版本? – 2010-09-14 08:47:54

+0

我会写一个CLR存储过程,甚至TSQL存储过程,并安排它... – 2010-09-14 08:48:44

+0

@mitch:亚不是最新的,我们仍然有biztalk 2006.我们可以写一个sp并安排它,但我们想知道如果biztalk可以做得更好。此外,与其他系统的集成必然会增加此工具 – srivatsayb 2010-09-14 08:57:10

回答

2

根据Mitch的说法,购买,安装和学习BizTalk以使用它来轮询数据库并提取XML文件将是一个很长的路要走。

但是,如果您的企业中已经有BizTalk,并且有一个策略将其用于所有集成,并且您将XML提取视为集成,那么可以。

这是很简单的:

  • 使用相应的适配器来轮询 的数据(例如SQL适配器如果您 RDBMS的是SQL,DB2在他的背包, 等)。对于MSSQL FOR XML AUTO是把它变成任何类型的 最简单的方法XML的
  • 您需要定义模式的输入和输出XML
  • 创建地图(或地图)来设置到SQL结果转换所需的文件格式。
  • 使用简单的文件适配器作为发送端口来执行XML写入。

使用接收端口的计划/服务窗口将计时限制为每晚一次。

一个问题:轮询SQL数据库时,阻止对数据的并发访问(例如,使用UPDLOCK)或类似操作,以确保如果作业同时触发,它将不会复制文件输出。

+0

+1提及陷阱 – Aliostad 2010-09-14 09:50:00

+0

感谢您的回答。那么,你说你没有真正的整合,你可以说我们主要是为了学习的目的。我们现在有winform从数据库中获取数据,但需要手动输入,并且它只在一个用户输入的xml中写入一行。我们是否可以将一个winform应用程序嵌入到biztalk编排中,并将其用于读取和写入,biztalk将仅处理计时,错误和重复以及并发访问。 – srivatsayb 2010-09-14 11:37:56

+1

@srivatsayb - 不,这听起来不是一个好主意--BizTalk和应用程序UI并没有真正的混合。既然你说你是为了学习的目的而做这件事,那么你就应该创建模式,地图,端口以及可能的编排。 – StuartLC 2010-09-14 13:13:16

3

在winforms应用程序中,您已经有了C#代码来执行传输。在这种情况下,将这一过程转移到Biztalk似乎没有任何商业价值。

您可以将此代码移动到Windows服务应用程序,该应用程序会每晚自动运行。

为了使它更健壮,我首先将所有数据复制到一个临时表中,然后一次处理它一行,确保每行都保存在每行之后。然后,如果发生故障,它将从上次停止的位置开始。

相关问题