在MS访问passthru中创建sql server临时表

时间:2013-06-17 21:19:07

标签: sql-server ms-access sql-server-2012 pass-through

我创建了一个访问查询,其中包含大约700条记录的3字段输出,我希望将其用作对SQL服务器的passthru查询的输入。

我已经在SQL服务器中完全测试了该过程,并且它工作正常,但是当我尝试在passtrhu中运行相同的代码时,我收到错误

  

将returnrecords属性设置为yes的传递查询没有   返回任何记录。

以下是查询的前几行:

if object_id('tempdb..#marktmp1') is not null drop table #marktmp1
create table #marktmp1
(Cid bigint,
Ccd varchar(6),
Ciss int);
/*
Insert into #marktmp1
values
(5110029175,    'SPO',  17),
(5110029722,    'SPO',  17),
(5110035139,    'SPO',  17);

我只是将第一个查询的输出复制/传递到上面的列表中

在记录列表的末尾,我尝试将#marktmp1表加入现有表。

我们在Sql Server 2012上。

2 个答案:

答案 0 :(得分:2)

在没有看到其余代码的情况下,我猜你永远不会以任何其他方式进行选择或返回结果集(比如调用存储过程)。如果是这种情况,请查看此答案中的重要注释:

how-to-create-temp-tables-in-sql-server-via-ms-access

注意,也请检查我后面的Gord Thompson的答案,并确保你不会遇到麻烦。

答案 1 :(得分:0)

简易解决方案:在传递中添加SET NOCOUNT ON作为第一个命令。

当您将记录插入#temp表时,SQL Server响应### Record(s) affected. Access会看到此消息并将其解释为查询完成,但未找到返回的行。这就是你得到的原因

  

将returnrecords属性设置为yes的传递查询没有   返回任何记录

SET NOCOUNT ON关闭这些信息消息,然后访问将等待最终的SELECT发生。