我试图通过在经典 ASP 中查询 2 个数据库 (Sybase) 来生成报告。
我创建了 2 个连接字符串:
数据库的 connA
数据库 B 的 connB
两个数据库都存在于同一服务器上(不知道这是否重要)
Queries:
q1 = SELECT column1 INTO #temp FROM databaseA..table1 WHERE xyz="A"
q2 = SELECT columnA,columnB,...,columnZ FROM table2 a #temp b WHERE b.column1=a.columnB
其次是:
response.Write(rstsql) <br>
set rstSQL = CreateObject("ADODB.Recordset")<br>
rstSQL.Open q1, connA<br>
rstSQL.Open q2, connB
当我尝试在浏览器中打开此页面时,收到错误消息:
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e37”
[DataDirect][ODBC Sybase 有线协议驱动程序][SQL Server]#temp 未找到。指定owner.objectname 或使用sp_help 检查该对象是否存在(sp_help 可能会产生大量输出)。
谁能帮助我了解问题所在并帮助我解决它?
Thanks.
对于这两个查询,您似乎正在尝试插入#temp。 #temp 位于其中一个数据库(为了论证,数据库A)。因此,当您尝试从databaseB 插入#temp 时,它会报告它不存在。
尝试将其更改为Into #temp From to Into 数据库.dbo.#temp From在这两个声明中。
另外,请确保连接字符串对其他数据库具有权限,否则这将不起作用。
更新:与超出范围的临时表相关 - 如果您有一个连接字符串对两个数据库都具有权限,那么您可以将其用于两个查询(同时保持连接处于活动状态)。查询其他数据库中的表时,引用该表时请务必使用[DBName].[Owner].[TableName]格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)