【问题标题】:Copy Data From ODBC Connection To Local Database将数据从 ODBC 连接复制到本地数据库
【发布时间】:2013-07-10 14:49:58
【问题描述】:

我想从我们的 MS SQL 服务器上的 ODBC 连接数据库创建表的缓存副本。我们目前正在直接从几个 Excel 表连接到 ODBC 连接并运行查询。它们大约需要 1 到 2 分钟才能完成,并且每天运行几次时,加起来很快。因此,为了尝试解决这个问题,我从 ODBC 连接中复制了几个表并运行了一个查询,大约需要 11 秒。我想创建表的副本并每隔一小时左右更新一次。但我只想更新更改的表和行以尝试降低服务器负载。我想将其作为存储过程来执行。我不太擅长 SQL,想知道是否有一种半简单的方法可以做到这一点

【问题讨论】:

    标签: sql-server caching connection copy odbc


    【解决方案1】:

    您可以编写一个存储过程来运行您的查询,只需稍加修改即可输出到物理表。

    例如:

    select a.FirstName, a.LastName, b.City, b.State, b.zip into _temp_report
    from customers a join addresses b on a.customer_id = b.customer_id
    

    在上面的示例中,into _temp_report 部分是重要的部分。它将使用您的查询结果创建一个新的物理表。

    然后您可以简单地将报告指向该表。

    您可以使用 SQL Server 代理创建按计划运行存储过程的作业。

    您显然需要添加一些逻辑来在每次运行存储过程时删除 _temp_report 表,这样您就不会在每次作业运行时都尝试重新创建它。

    【讨论】:

    • 那只是复制表格对吗?它不添加更改的行?我正在缓存的数据库大小约为 200mb,运行完整的缓存查询大约需要 20 分钟。我只想从已添加的表中选择行。我知道如何在 C# 或 VB 中执行此操作,但我不想为服务器创建另一个服务。我宁愿它是一个可以定期运行的存储过程
    • 我写的假查询将在一个存储过程中。它不只是复制表格。它运行您的查询需要 20 分钟(顺便说一下,200mb 需要 20 分钟非常令人惊讶。我敢打赌,添加索引和其他一些小调整会花费时间 way)并将其输出到临时表.您可以修改查询以仅考虑最近更新/添加的行。重要的想法/要点是,您可以运行一个 sproc,它仅根据来自 sproc 的查询创建一个新表。
    • 这更有意义。不幸的是,我无法向数据库添加索引,因为它是我们会计软件(Peachtree/Sage 50)中的只读数据库
    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 2010-11-13
    • 2022-08-04
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多