错误"无效的对象名称"选择进入临时表后

时间:2017-10-10 18:49:52

标签: c# sql-server temp-tables

我正在从不同的dbms将工作代码移植到Microsoft Sql Server 2016。 sql看起来像

SELECT many_fields INTO #this_repository FROM complex_join WHERE parametric_cond

我打开连接

OdbcCommand server_cmd = new OdbcCommand(SQL_extractor_server, DbConnection);
OdbcParameter refresh_from_par = new OdbcParameter("@refresh_from",refresh_from);
OdbcParameter refresh_to_par = new OdbcParameter("@refresh_to",refresh_to);
server_cmd.Parameters.Add(refresh_from_par);
server_cmd.Parameters.Add(refresh_to_par);
server_cmd.ExecuteNonQuery();
server_cmd.Dispose();

然后在该连接中始终执行一些命令。

OdbcCommand tot_rows_cmd = new OdbcCommand("SELECT COUNT(*) AS 'tot_rows' FROM #this_repository",DbConnection);
tot_rows = (int)tot_rows_cmd.ExecuteScalar();
tot_rows_cmd.Dispose();

您能解释错误或建议在哪里查看吗? 谢谢!

进一步尝试

  1. 我已经移动了代码和连接字符串 System.Data.OdbcSystem.Data.SqlClient
  2. 我已将Pooling=false;添加到连接字符串
  3. 我已经插入了其他代码(只有一个SELECT @@spid ExecuteScalar)仔细检查spid是否始终相同
  4. 我调试了第一个int的返回代码(ExecuteNonQuery) 它是0
  5. 我已经从SqlDbx执行SQL - 一个接一个地 - 它确实按预期工作
  6. 从C#代码中尝试只有一个SqlCommand和两个以;分隔的语句: 也工作但我是什么&# #39;我试图完成
  7. 不幸的是,到现在为止没有运气!

1 个答案:

答案 0 :(得分:0)

它看起来像ADO.NET中的一个错误

这个answer清楚地解释了哪个是根本原因(顺便说一下它在Sql客户端中工作的原因):

我已尝试过对SQL中的参数进行硬编码,但问题并没有显示出来。