在2个表选择查询,在不同的数据库服务器(Select Query on 2 tables, on d

2019-09-02 06:50发布

我试图生成通过查询在传统的ASP 2个数据库(的Sybase)的报告。

我已创建2个连接字符串:

connA为databaseA
connB为databaseB

这两个数据库存在于同一台服务器上(不知道是不是这个事项)

查询:

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

当我尝试在浏览器中打开这个页面,我得到错误信息:

Microsoft OLE DB提供程序的ODBC驱动程序错误 '80040e37'

[DataDirect的] [ODBC的Sybase Wire Protocol驱动程序] [SQL服务器] #TEMP没有找到。 指定owner.objectname或使用sp_help来检查该对象是否存在(sp_help可能会产生大量输出)。

任何人都可以请帮助我了解是什么问题,并帮助我解决这个问题?

谢谢。

Answer 1:

有了这两个查询,它看起来像你正试图插入#TEMP。 #TEMP位于数据库(为了讨论,databaseA)中的一个。 所以,当您尝试插入来自databaseB #TEMP,它报告说,它不存在。

尝试从进入#TEMP改变它进入databaseA.dbo。#临时在这两个语句。

此外,请确保连接字符串对其他数据库的权限,否则将无法正常工作。

更新:关于临时表中走出去的范围 - 如果你有一个对两个数据库的权限一个连接字符串,那么你可以使用这两个查询(同时保持连接活着)。 虽然查询在其他数据库表,参照该表时,一定要使用[数据库名]。[所有者]。[表名]格式。



Answer 2:

你的临时表超出范围,它是第一个连接中只有“活着”,并在第二个连接将无法使用移动只是这一切在一个代码块并执行一个连接如内



Answer 3:

温度超出第二季度的范围。

你所有的工作可以在一个查询来实现:


SELECT a.columnA, a.columnB,..., a.columnZ
FROM table2 a
INNER JOIN (SELECT databaseA..table1.column1 
            FROM databaseA..table1
            WHERE databaseA..table1.xyz = 'A') b
  ON a.columnB = b.column1


文章来源: Select Query on 2 tables, on different database servers