8

2 つの異なる SQL サーバーで 2 つの異なるテーブルにクエリを実行する方法に関する参考文献をすべて見て、その実装方法を理解しています。ただし、このコマンドは、で作成された一時テーブルでは機能しないようです##

あるサーバーに結合を記述し、そのサーバーの 1 つの一時テーブルと他のサーバーの 1 つの一時テーブルを参照する場合、SQL Server は##コマンドに があるためtempdb、リモートではなくローカル サーバーの を自動的に参照すると想定します。 1。OPENROWSETまた、機能が無効になっており、再度有効にするには承認を得る必要があるため、現時点では使用できません。

私の質問は、このコマンドを再構成して、どれtempdbを見るべきかを認識する方法はありますか?

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
4

2 に答える 2

19

これを試して、リンクサーバーからグローバル一時テーブルをクエリしてください

SELECT * FROM OPENQUERY(linkedServerName, 'SELECT * FROM ##temp')
于 2014-08-20T16:21:24.413 に答える
1

MSDN http://msdn.microsoft.com/en-us/library/ms186986(v=sql.105).aspxによると、グローバル一時テーブルは SQL Server の特定のインスタンスでのみ表示されます。

グローバル一時テーブルは、作成後にすべてのユーザーとすべての接続に表示され、テーブルを参照しているすべてのユーザーが SQL Server のインスタンスから切断されると削除されます。

また、リモートのグローバル一時テーブルでアクションを試行すると、明確なエラー メッセージが表示されます。

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

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

答えはノーのようです。(簡単な) 方法はありません。

于 2012-12-27T17:37:20.623 に答える