Sql server 从进度数据库提取到SQL Server

Sql server 从进度数据库提取到SQL Server,sql-server,odbc,progress-db,Sql Server,Odbc,Progress Db,我正在寻找从进度数据库(v10.2b)中提取数据的最佳方法(或几个好方法供选择)。最终目标将是SQL Server(v2008)。我之所以说“最终目标”,是因为我不必直接从SQL Server内部连接到进度,也就是说,我不反对将进度提取到文本文件,然后将其导入SQL Server 我对方法的研究提出了与我不匹配的方案 将整个进度数据库迁移到SQL Server 将整个表从Progress导出到SQL Server 使用特定于进度的工具,这是我无法访问的 我能够使用ODBC连接到Progres

我正在寻找从进度数据库(v10.2b)中提取数据的最佳方法(或几个好方法供选择)。最终目标将是SQL Server(v2008)。我之所以说“最终目标”,是因为我不必直接从SQL Server内部连接到进度,也就是说,我不反对将进度提取到文本文件,然后将其导入SQL Server

我对方法的研究提出了与我不匹配的方案

  • 将整个进度数据库迁移到SQL Server
  • 将整个表从Progress导出到SQL Server
  • 使用特定于进度的工具,这是我无法访问的
我能够使用ODBC连接到Progress,并在VisualStudio(v2010)中编写了一些查询。我还对Progress数据库做了一些自定义编程,构建了一个简单的web界面来证明一些事情

因此,我的要求是使用ODBC,并构建一个每天运行特定查询的例程。然后,此查询的结果将导入SQL Server数据库。提前感谢你的帮助

更新
经过一些额外的研究,我确实发现链接服务器是我正在寻找的。使用SQL Server Express的其他人的一些注意事项

  • 如果您使用的是SQL Server Express,则在桌面上或DTS的“开始”菜单中可能看不到程序。我发现DTSWizard.exe嵌套在我的SQL Server程序文件中(对我来说,是C:\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn),并且能够简单地创建一个快捷方式
  • 另外,因为我使用的是SQL Server的SQL Express版本,所以无法保存我创建的包。因此,在创建包并运行一次之后,我只需重新运行包,并保存SQL以备将来使用

能否使用OLE连接到进度数据库?如果是这样,您可以使用来绕过提取到文件的需要,然后将该文件加载到SQL Server中。或者,您可以提取到Excel,然后从Excel导入SQL Server。

回答有点晚,但万一其他人想这么做

您可以使用链接服务器,但您会发现性能不如通过ODBC驱动程序直接连接,而且数据类型的转换可能意味着您无法访问某些表。不过,链接服务器对于探索数据可能很方便

如果您将SSIS与ODBC驱动程序一起使用(您必须使用ADO.NET数据源),那么这将最有效地执行,并且您应该获得更准确的数据类型(请记住,progress中的数据类型可以动态更改)


如果您必须提取很多表,我将查看BIML以帮助您实现这一点。BIML(商业智能标记语言)可以帮助您动态创建许多SSI包,这些包可以从主包中调用。然后可以计划或特别运行此主程序包,也可以根据需要运行任何子程序包。

是否可以使用OLE连接到进度数据库?如果是这样,您可以使用来绕过提取到文件的需要,然后将该文件加载到SQL Server中。或者,您可以提取到Excel,然后从Excel导入到SQL Server。看来最适合您的是SQL Server集成服务(SSIS)。您可以创建可以使用SQL Agent在天、小时等时间安排的包。此包将使用SQL Server中的ODBC从进度数据库导入数据…感谢您的快速反馈。@Jason,您已经进入问题的核心,谢谢。我熟悉SSIS,并希望使用SSIS的调度方面。但是,我不熟悉如何使用ODBC从包中执行查询。这就是你的建议吗?@OMG Ponies,目前我相信我只限于ODBC。我将在周一与索取摘录的人会面,并询问此事。您知道ODBC驱动程序中是否会包含此功能吗?我知道购买ODBC接口的成本比他预期的要高,所以我不认为有人希望在这方面花费太多。尽管如此,到目前为止使用ODBC的性能并没有给我留下深刻的印象。