2

我正在尝试用我们可以从存储过程(使用 xp_cmdshell)调用的 exe 替换 DTS 访问导出程序包。

我们正处于 SQL 2000 和 SQL 2005 之间的过渡阶段,目前如果我们不能使用 DTS 或 SSIS,那将是最好的选择。

我相信我有以下选择:

  • 使用 SQL 数据阅读器读取 SQL 记录,并使用 ADO.net 将读取的记录插入 Access。我已经实现了这个,它太慢了。这不是一个选项
  • 在访问中设置链接表,然后访问以从 sql 中提取数据。如果有人有这方面的经验,我将不胜感激一些代码示例或指出一些资源?

如果有任何其他选项可以将大量数据从 SQL 传输到 Access 数据库中,那就太棒了,但性能是一个大问题,因为我们可以处理每个表多达 100 万条记录。

4

5 回答 5

1

你试过这个吗?

于 2009-03-16T05:36:45.800 回答
1

为什么不在 Access 中创建链接表,并从 Sql Server 中提取数据,而不是从 Sql 推送到 Access ?

于 2009-03-16T10:43:13.583 回答
1

我已经完成了很多案例,从 Access 数据库开始,连接到 SQL Server,创建创建表或插入 Querydef,并编写一些代码来执行 querydef,可能带有参数。但是,我需要对您的问题和您对 Access 的熟悉程度做出很多假设,以便更详细地了解。你能用这个描述走多远?

于 2009-03-18T04:09:31.010 回答
1

我最终使用了 Access 互操作,感谢 le dorfier 为我指出了导入功能的方向,这似乎是最简单的方法..

我现在有这些方面的东西:

Access.ApplicationClass app = new Access.ApplicationClass();
Access.DoCmd doCmd = null;

app.NewCurrentDatabase(_args.Single("o"));
doCmd = app.DoCmd;

//Create a view on the server temporarily with the query I want to export

doCmd.TransferDatabase(Access.AcDataTransferType.acImport,
    "ODBC Database",
     string.Format("ODBC;DRIVER=SQL Server;Trusted_Connection=Yes;SERVER={0};Database={1}", _args.Single("s"), _args.Single("d")),
     Microsoft.Office.Interop.Access.AcObjectType.acTable,
     viewName,
     exportDetails[0], false, false);
//Drop view on server

//Releasing com objects and exiting properly.
于 2009-03-31T09:04:10.937 回答
0

你看过bcp吗?它是一个命令行实用程序,可以很好地导入和导出大量数据。我从来没有尝试过让它与 Access 配合得很好,但它是 DTS 和/或 SSIS 的一个很好的轻量级替代品。

就像其他人所说的,我知道将数据导入 Access mdb 的最简单方法是在 Access 中进行设置。粗略地讲:

  1. 为要导出的 SQL 数据创建链接表。(在访问:文件--> 获取外部数据--> 链接表)这只是给你一个到 sql server 的连接。
  2. 创建一个表示要导出的数据的架构的本地表。(在表格选项卡上,单击“新建”按钮并跟随您的鼻子)。
  3. 创建从链接表 (SQL Server) 中选择数据并将行附加到本地表 (访问 mdb) 的更新查询。
  4. 在宏选项卡上,创建一个新宏来执行您刚刚在上面创建的查询(我不记得要使用的确切“操作”,但它类似于 OpenQuery 或 RunQuery);将宏命名为“autoexec”,这将导致它在打开 mdb 时自动运行。
  5. 在适当的时候使用脚本(或其他)复制和打开 mdb;autoexec 宏将启动,查询会将数据从 SQL 服务器复制到 mdb。
于 2009-03-18T04:53:42.793 回答