1

我在这个问题上花了几天时间,主要研究和大量的反复试验试图找到解决方案。这是我所拥有的以及我需要做的工作:

  1. SQL Server 2008 中调用的 Sproc:TRUNCATE TABLE 表名(30,000 条记录)
  2. MS Access (2010) 客户端
  3. 使用 SQLCMD 实用程序调用存储过程的批处理文件

在我的 Access 客户端中,我使用 vba/Shell() 方法来调用批处理文件。然后批处理文件使用 SQLCMD 连接到 SQL Server 并调用 SPROC。

如果我直接从我的机器上单击批处理文件,它可以完美运行,最多 2 秒。如果我使用 Shell() 方法从 Access 中运行批处理文件,它似乎将我的 SPROC 中的 TRUNCATE 视为 DELETE 而不是 TRUNCATE。它闲置了几分钟并超时,没有记录被删除。

如果我在只有几千条记录的表上做同样的事情,它会成功,大约 5 秒。

我知道,“不要将 Access 用作客户端”!我从非 IT 部门继承了这个应用程序,所以我必须让它工作,没有资金来重新设计它。

我已经很久没有在这里发帖了,所以希望我遵循协议,

提前感谢您提供任何潜在的解决方案,

4

1 回答 1

0

您是否尝试过在调用存储过程的 SQL Server 代理中设置按需作业?然后,您可以使用 t-sql 命令运行该作业。

于 2013-06-24T23:32:00.590 回答