varios unir una tablas tabla servidores relacionar relacionadas otra misma entre diferentes datos consultas consultar consulta bases sql asp-classic vbscript sybase

sql - unir - Seleccione Query en 2 tablas, en diferentes servidores de bases de datos



unir dos tablas sql (3)

la temperatura está fuera del alcance en q2.

Todo su trabajo se puede hacer en una consulta:

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

Intento generar un informe consultando 2 bases de datos (Sybase) en ASP clásico.

He creado 2 cadenas de conexión:

connA para la base de datosA
connB para databaseB

Ambas bases de datos están presentes en el mismo servidor (no sé si esto importa)

Consultas:

q1 = SELECCIONAR columna1 EN #temp FROM databaseA..table1 WHERE xyz = "A"
q2 = SELECCIONE la columnaA, columnaB, ..., columnaZ FROM table2 a #temp b DONDE b.column1 = a.columnB

seguido por:

response.Write (rstsql)
establecer rstSQL = CreateObject ("ADODB.Recordset")
rstSQL.Open q1, connA
rstSQL.Open q2, connB

Cuando trato de abrir esta página en un navegador, recibo un mensaje de error:

Proveedor OLE DB de Microsoft para errores de controladores ODBC ''80040e37''

[DataDirect] [Controlador de ODBC Sybase Wire Protocol] [SQL Server] #temp no encontrado. Especifique owner.objectname o use sp_help para verificar si el objeto existe (sp_help puede generar muchos resultados).

¿Alguien podría ayudarme a entender cuál es el problema y ayudarme a solucionarlo?

Gracias.


Con ambas consultas, parece que estás intentando insertar en #temp. #temp se encuentra en una de las bases de datos (por los argumentos, base de datos A). Por lo tanto, cuando intenta insertar en #temp desde databaseB, informa que no existe.

Intente cambiarlo de Into #temp From a Into databaseA.dbo. # Temp De ambas sentencias.

Además, asegúrese de que las cadenas de conexión tengan permisos en la otra base de datos, de lo contrario, esto no funcionará.

Actualización: en relación con la tabla temporal que está fuera del alcance: si tiene una cadena de conexión que tiene permisos en ambas bases de datos, puede usarla para ambas consultas (manteniendo la conexión activa). Mientras consulta la tabla en el otro DB, asegúrese de usar el formato [DBName]. [Owner]. [TableName] cuando consulte la tabla.


su tabla temporal está fuera de alcance, solo está ''viva'' durante la primera conexión y no estará disponible en la segunda conexión Simplemente mueva todo en un bloque de código y ejecútelo dentro de una conexión