2011-12-23 57 views
1

我是数据库的新手,我正在寻找一些帮助。我们有一个自定义的应用程序,它可以将数据保存在SQL Server数据库中。我们还有一个基于QuickBooks销售点的POS系统。我们正在购买一款名为QODBC的产品,它为我们提供了一个符合ODBS的QBPOS接口。我需要更新另一个SQL Server数据库中的客户信息

SQL Server数据库有一个名为customerinfo的表,并且在70个总共中有15列我们感兴趣的信息。

它们是:

id, txtfname, txtlname, txtemployer, txtphone, email, txtaddress, txtcity, txtstate, txtzip, IDENTIFICATIONType, IDENTIFICATIONumber, IDState, IDENTIFICATIONExpiry & dtpBirth

这些列需要导入到ODBC可访问的QBPOS中,其中列名称不同,QB位于所有上述名称之前(例如SQL Server列为id,因此QBPOS列为QBid)。什么

我们想要做的是定期导入(比如说每分钟左右)我们需要的数据导入QBPOS。首先,除了每分钟或每分钟的导入时间表之外,是否可以通过一个我们可以放在桌面上的图标来完成,只有在我们需要时才能做到这一点?此外,我们是否能够为现有客户从SQL Server数据库中更新已更改的数据?

我提前感谢您的帮助,您可以提供任何帮助!

+2

欢迎来到StackOverFlow。所有问题的答案是“是的,这是可能的”;然而,如果你能以“这里是我的设置”的格式提问,你会得到更多的帮助,我试过了,我还应该尝试什么? – 2011-12-23 09:19:12

回答

2

作为一般规则,数据被拉取而非推送要简单得多。

这意味着您最好在QBPOS系统上设置一个时间表,查询MS SQL Server以收集您需要的数据。然而,我并不知道QBPos的任何内容,也不能评论如何做到这一点,或者即使可能。

另一种方法是从SQL Server一次将一条记录推入QBPOS。这当然是可能的,但我希望它是慢...

  1. 在创建QBPOS服务器上的登录,您的自动化过程将使用
  2. 创建相同的登录(相同的密码) MS SQL Server的
  3. 创建连接到QBPOS
  4. 创建一个存储过程将记录插入相应的QBPOS表
  5. 转到MS SQL Server的代理调度的MS SQL Server上的链接服务器并创建一个新的工作每分钟都会触发
  6. 组的工作,以执行存储过程

(虽然你的代码可能看起来它推动了一整套数据的一气呵成,如果配置文件中的SQL服务器上,您会看到,它的发射了许多个人插入/更新/删除命令。这就是为什么它是两者的速度较慢的机制。)


要只用改变到SQL Server更新QBPOS服务器,你需要做这样的事情...
- 记录时,每次改变发生(删除以及插入和更新)
- 在最后改变的时间戳收到
的QBPOS服务器存储 - 检查你的SQL Server存储过程,它的值来确定哪些修改push

注意:“已经推送的内容”和“已收到的内容”之间存在差异,因为QBPOS数据库可能会从备份等中恢复。这意味着“最近收到的数据“值必须存储在QBPOS数据库中。


这个答案是故意相当高的水平作为脚本来这一切的精确解会采取一大堆的空间。如果您有任何不熟悉的术语或概念,我建议您在Books Online或Google中搜索它们,并且看看您可以自己管理什么,并且有一点点玩法。在这些事情中,了解自己的行为和原因非常重要,而不是仅仅复制其他人的明确指示。

+0

好吧,这一切都需要在QBPOS之外发生,它没有任何设施来做这些事情,这就是为什么我们要购买第三方ODBC驱动程序。由于所有这些都需要在外部进行,这是否可以在桌面上显示一个图标,点击时会运行必须写入的sql语句? – user1113091 2011-12-23 09:25:23

+0

@ user1113091 - 仅当您编写了一个应用程序或某个在您的SQL Server上运行查询时。然后,您可以使用您运行的应用程序替换代理程序计划作业来执行存储过程。 – MatBailie 2011-12-23 09:28:27

+0

@ user1113091 - 如果您有权访问多台服务器,您可以在其中测试使用LINKED服务器并编写该设置的测试版本,我会这样做。在购买组件以使其工作之前,测试并理解所提出的解决方案。 – MatBailie 2011-12-23 09:30:03

相关问题