2012-12-03 7 views
6

Ich habe alle Hinweise gesehen, wie zwei verschiedene Tabellen auf zwei verschiedenen SQL-Servern abzufragen, und ich verstehe, wie es implementiert werden soll. Der Befehl scheint jedoch nicht mit temporären Tabellen zu arbeiten, die mit ## erstellt wurden.Frage globale Temp-Tabelle auf einem Verbindungsserver

Wenn ich einen Join auf einem Server schreibe und eine temporäre Tabelle auf diesem Server und eine temporäre Tabelle auf dem anderen Server referenziert, geht SQL Server davon aus, dass 10 im Befehl enthalten ist Server tempdb, nicht der Remote-Server. Ich kann auch OPENROWSET zu diesem Zeitpunkt nicht verwenden, da die Funktion deaktiviert wurde und ich die Genehmigung erhalten muss, sie wieder einzuschalten.

Also meine Frage gibt es eine Möglichkeit, dass ich diesen Befehl neu konfigurieren kann, um zu erkennen, welche tempdb zu betrachten?

SELECT * 
FROM (##mytemptable1 Demog 
INNER JOIN MyServer.tempdb.dbo.##mytemptable2 PeakInfo ON (Demog.SAMPLE_NO = PeakInfo.SampleNum) AND (Demog.JOB_NO = PeakInfo.JobNum)) 
ORDER BY PeakInfo.JobNum, PeakInfo.SampleNum, PeakInfo.Replicate ,PeakInfo.Reinjection ,PeakInfo.PeakNameCustSort 
+0

Ist die Fern temporäre Tabelle durch einen separaten Prozess erstellt, oder die gleiche, die sie miteinander verbunden werden wird? –

Antwort

0

MSDN http://msdn.microsoft.com/en-us/library/ms186986(v=sql.105).aspx sagt, dass die globalen temporären Tabellen sind nur sichtbar, auf die spezifische Instanz von SQL Server:

Globale temporäre Tabellen sind für jeden Benutzer und jede Verbindung nachdem sie erstellt werden, und werden gelöscht, wenn alle -Benutzer, die auf die Tabelle verweisen, die Verbindung zur Instanz von SQL Server trennen.

Auch versuchte jede Aktion auf der entfernten globale temporäre Tabelle führt zu einer deutlichen Fehlermeldung:

SELECT * FROM LinkedServerName.TempDB.dbo.##GLOBTABLE 

Database name 'TempDB' ignored, referencing object in tempdb.

Sieht aus wie die Antwort nein ist, gibt es keine (leicht) Art und Weise.

13

versuchen, diese aus verknüpften Server globale temporäre Tabelle abzufragen

SELECT * FROM OPENQUERY(linkedServerName, 'SELECT * FROM ##temp') 
+2

Ich kann dies überprüfen, funktioniert nicht sicher, ob OP Zugriff auf OpenQuery obwohl seit OpenRowSet deaktiviert wurde. – scw