1

我是数据库新手,正在寻求帮助。我们编写了一个自定义应用程序,将其数据保存在 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 中,该 QBPOS 具有不同名称的列,QB 位于上述所有名称之前(例如 SQL Server 列是idQBPOS 列QBid)。什么

我们想做的是定期(比如每分钟左右)将我们需要的数据导入 QBPOS。首先,除了每分钟左右的导入计划之外,是否可以通过我们可以放在桌面上的图标来执行此操作,并且仅在需要时才执行此操作?此外,我们是否能够只为现有客户更新 SQL Server 数据库中的更改数据?

我提前感谢大家提供的任何帮助!!!

4

1 回答 1

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. 创建一个将记录插入到适当的 QBPOS 表中的存储过程
  5. 转到 MS SQL Server 的代理调度程序并创建一个每分钟触发的新作业
  6. 设置该作业以执行您的存储过程

(尽管您的代码可能看起来像是一次推送一整套数据,但如果您分析 SQL Server,您会发现它正在触发许多单独的插入/更新/删除命令。这就是为什么它是较慢的机制他们俩。)


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

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


这个答案是故意相当高的水平,因为编写所有这些的确切解决方案将占用大量空间。如果有任何你不熟悉的术语或概念,我建议你在 Books Online 或 Google 中搜索它们,看看你可以自己管理什么,然后玩一玩。在这类事情中,知道你在做什么以及为什么这样做是非常重要的,而不是仅仅从别人那里复制明确的指令。

于 2011-12-23T09:21:13.610 回答