2012-12-03 15 views
6

Widziałem wszystkie referencje dotyczące sprawdzania dwóch różnych tabel na dwóch różnych serwerach SQL i rozumiem, w jaki sposób należy je wdrożyć. Jednak polecenie nie wydaje się działać z tabelami tymczasowymi utworzonymi za pomocą ##.Kwerendowa globalna tabela tymczasowa na połączonym serwerze

Jeśli napiszę połączenie na jednym serwerze i odniesie się do jednej tabeli tymczasowej na tym serwerze i jednej tabeli tymczasowej na drugim serwerze, SQL Server zakłada, że ​​ponieważ w poleceniu znajduje się ##, automatycznie wyszukuje lokalne serwer tempdb, a nie zdalny. W tej chwili nie mogę też użyć OPENROWSET, ponieważ funkcja została wyłączona i muszę uzyskać zgodę na jej ponowne włączenie.

Moje pytanie dotyczy sposobu, w jaki mogę przekonfigurować to polecenie, aby rozpoznać, na które dane należy patrzeć?

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

Czy pilot tabeli temp stworzony przez oddzielny proces, albo ten sam, który jest łączenie ich ze sobą? –

Odpowiedz

0

MSDN http://msdn.microsoft.com/en-us/library/ms186986(v=sql.105).aspx mówi, że globalne tabele tymczasowe są widoczne tylko na konkretnej instancji SQL Server:

globalne tabele tymczasowe są widoczne dla każdego użytkownika i każdego połączenia po ich tworzenia, a są usuwane, gdy wszyscy użytkownicy, którzy są odwołujący się do tabeli, odłączają się od wystąpienia programu SQL Server.

Ponadto, każde działanie próbowali na odległych wyników globalnej tabeli temp w jasnym komunikatem o błędzie:

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

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

Wygląda na to, że odpowiedź brzmi: nie, nie ma (łatwy) sposób.

13

spróbować kwerendy globalne temp tabeli z serwera połączonego

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

Mogę to sprawdzić, ale nie jestem pewien, czy OP ma dostęp do OpenQuery, mimo że OpenRowSet został wyłączony. – scw

Powiązane problemy