我之前使用过临时表没有任何问题,但今天,他们不适合我。返回
。 #MyTemp未找到
从最后一行开始。
scBld.CommandText = "select top 10 * into #MyTemp from elig_feeds";
scBld.ExecuteNonQuery();
scBld.CommandText = "select count(*) from #MyTemp";
int p = (int) scBld.ExecuteScalar();
如果我删除“#”,它就可以正常工作。
最近唯一改变的是数据库的版本兼容性,但我不认为这是一个因素。 db是2005开发人员版。
THX。
答案 0 :(得分:2)
我今天使用ODBC和OLE DB在2005 Express上遇到了类似的问题。 正如this article中所解释的那样,这种行为可能是由于使用了预准备语句,这些语句在准备好时会被包装到临时存储过程中。
在SQL Server 2005,SQL Server 2000和SQL Server 7.0中,准备好了 语句不能用于创建临时对象,也不能 引用系统存储过程,用于创建临时对象等 作为临时表。这些程序必须直接执行。
使用SQLExecDirect直接提供语句确实有助于修复应用程序。不知道应该如何应用于ADO.NET。
答案 1 :(得分:1)
检查连接是否自动关闭。您正在执行两个不同的命令,具体取决于连接设置,它可能会在您调用ExecuteNonQuery()后重置。
[连接关闭时会破坏临时表。]