我需要更新一个SQL Server数据库中的客户信息

时间:2011-12-23 09:04:21

标签: sql sql-server odbc quickbooks

我是数据库的新手,我正在寻求一些帮助。我们有一个自定义应用程序,它将数据保存在SQL Server数据库中。我们还有一个基于QuickBooks销售点的POS系统。我们正在购买一种名为QODBC的产品,它为我们提供了与QBPOS兼容的ODBS接口。

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列为{{ 1}})。什么

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

我提前感谢你们所提供的任何帮助!!!

1 个答案:

答案 0 :(得分:2)

作为一般规则,数据被拉动而不是被推动要简单得多。

这意味着您最好在QBPOS系统上设置一个计划,该计划查询MS SQL Server以收集您需要的数据。但是,我不了解QBPos,也不能评论如何做到这一点,或者即使有可能。

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

  1. 在自动流程将使用的QBPOS服务器上创建一个LOGIN
  2. 在MS SQL Server上创建相同的LOGIN(使用相同的密码)
  3. 在连接到QBPOS的MS SQL Server上创建一个LINKED SERVER
  4. 创建一个STERED PROCEDURE,INSERTS记录到相应的QBPOS表中
  5. 转到MS SQL Server的代理程序计划程序并创建一个每分钟触发的新作业
  6. 设置该作业以执行您的STORED PROCEDURE
  7. (虽然您的代码可能看起来像是一次性推送一整套数据,但如果您对SQL Server进行概要分析,您会发现它启动了许多单独的插入/更新/删除命令。这就是为什么它是两者的较慢机制。)


    要仅使用更改更新QBPOS服务器到SQL Server,您需要执行以下操作:
    - 记录每次更改发生的时间(删除以及插入和更新)
    - 在QBPOS服务器中存储收到的最后一次更改的时间戳 - 检查SQL Server存储过程中的值以确定要推送的更改

    注意:"已推送的内容与#34;之间存在差异。和"收到了什么"因为QBPOS数据库可以从备份等恢复。这意味着最后收到的数据"值必须存储在QBPOS数据库中。


    这个答案是故意相当高的水平,因为编写所有这些的确切解决方案需要占用大量空间。如果您有任何您不熟悉的术语或概念,我建议您在联机丛书或Google中搜索它们,并了解自己可以管理的内容,并进行一些游戏。在这些事情中,了解你的行为和原因是非常重要的,而不仅仅是复制其他人的明确指示。