Sélectionnez la Requête sur 2 tables, sur les différents serveurs de base de données
Je suis en train de générer un rapport à l'interrogation de 2 bases de données (Sybase) en ASP classique.
J'ai créé 2 chaînes de connexion:
connA pour databaseA
connB pour databaseB
Les deux bases de données sont présents sur le même serveur (je ne sais pas si c'est important)
Requêtes:
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
suivie par:
response.Write(rstsql) <br>
set rstSQL = CreateObject("ADODB.Recordset")<br>
rstSQL.Open q1, connA<br>
rstSQL.Open q2, connB
Lorsque j'essaie d'ouvrir cette page dans un navigateur, j'obtiens le message d'erreur:
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e37'
[DataDirect][ODBC Sybase Wire Protocol driver][SQL Server]#temp pas trouvé. Spécifier propriétaire.objectname ou de l'utilisation sp_help pour vérifier si l'objet existe (sp_help peut produire beaucoup de sortie).
Quelqu'un pourrait-il svp m'aider à comprendre quel est le problème et m'aider à résoudre ce problème?
Grâce.
OriginalL'auteur Pascal | 2008-08-19
Vous devez vous connecter pour publier un commentaire.
Avec les deux requêtes, il semble que vous essayez de l'insérer dans #temp. #temp est situé sur l'une des bases de données (pour l'amour du arguments, databaseA). Ainsi, lorsque vous essayez d'insérer dans #temp de databaseB, il signale qu'il n'existe pas.
Essayez de changer de En #temp De à En databaseA.dbo.#temp De dans les deux états.
Aussi, assurez-vous que les chaînes de connexion disposez des autorisations sur les autres DB, sinon cela ne fonctionnera pas.
Mise à jour: relatifs à la table temp de sortir de la portée - si vous avez une chaîne de connexion qui dispose des autorisations sur les deux bases de données, alors vous pourriez utiliser cette méthode pour les deux requêtes (tout en gardant la connexion de son vivant). Alors que l'interrogation de la table dans l'autre DB, assurez-vous d'utiliser [DBName].[Le propriétaire].[TableName] format en se référant à la table.
OriginalL'auteur Yaakov Ellis
votre table temporaire est hors de portée, il est seulement "en vie" lors de la première connexion et ne sera pas disponible dans la 2ème connexion
Il suffit de déplacer tout ça dans un bloc de code et l'exécuter à l'intérieur d'une connexion
OriginalL'auteur SQLMenace
temp est hors de portée dans t2.
Tout votre travail peut être fait en une seule requête:
OriginalL'auteur Forgotten Semicolon