2012-12-03 18 views
6

Ho visto tutti i riferimenti su come interrogare due tabelle diverse su due server SQL diversi e ho capito come deve essere implementato. Tuttavia, il comando non sembra funzionare con tabelle temporanee create con ##.Query tabella globale query su un server collegato

Se scrivo un join su un server e fa riferimento a una tabella temporanea su quel server e ad una tabella temporanea sull'altro server, SQL Server presuppone che poiché il comando ## è nel comando, esso esamina automaticamente il locale server tempdb, non quello remoto. Al momento non posso neanche utilizzare OPENROWSET perché la funzione è stata disabilitata e devo ottenere l'approvazione per riattivarla.

Quindi la mia domanda è un modo in cui posso riconfigurare questo comando per riconoscere quale tempdb guardare?

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

E 'la tabella temporanea remota creato da un processo separato, o la stessa che li sta unendo insieme? –

risposta

0

MSDN http://msdn.microsoft.com/en-us/library/ms186986(v=sql.105).aspx dice che le tabelle temporanee globali sono visibili solo sulla specifica istanza di SQL Server:

tabelle temporanee globali sono visibili a qualsiasi utente e qualsiasi connessione dopo la loro creazione, e vengono eliminati quando tutti gli utenti che sono fanno riferimento alla disconnessione della tabella dall'istanza di SQL Server.

Inoltre, ogni azione ha tentato sul telecomando risultati tabella temporanea globale in un messaggio di errore chiaro:

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

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

Sembra che la risposta è no, non c'è modo (facile).

13

provare questo per interrogare tabella temporanea globale dal server collegato

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

Posso verificare che funzioni, non sono sicuro che OP abbia accesso a OpenQuery anche se OpenRowSet è disabilitato. – scw

Problemi correlati