0

Ich Verfahren vom Server B Aufruf:Openquery Verfahren von Verbindungsserver

select * from openquery(A,'exec sp_qa2') 

sp_qa2 in Server A sind dies:

use master 
go 
create procedure sp_qa2 
begin 
declare @sql nvarchar(1000) 
SET @sql = 'USE [?]; EXEC [dbo].[sp_qa1]' 
EXEC sp_MSforeachdb @sql 
end 

und sp_qa1 in Server A ist dies:

create procedure sp_qa1 
begin 
declare @a int 
end 

Dieser Fehler wird zurückgegeben:

Nachricht 208, Ebene 16, Status 1, Prozedur sp_MSforeach_worker, Zeile 102 [Stapel Start Zeile 2] ungültiger Objektname "#qtemp".

Wie kann ich das beheben?

+0

Es sieht aus wie '# qtemp' wurde in' nicht erstellt sp_MSforeach_worker'. Können Sie Code von dieser Prozedur veröffentlichen, in der dieser Fehler auftritt? Außerdem wird dieses Verfahren nirgends in dem von Ihnen angegebenen Code erwähnt. Wie wird es ausgeführt? – Aidan

+0

Diese # Qtemp Tabelle in sp_MSforeach_worker ist Systemprozedur, die jeder hat. Das habe ich nicht geschaffen. – Sher

+0

So ist es, meine Entschuldigung. – Aidan

Antwort

0

Ist Ihre RPC und RPC OUT Option Ihres verbundenen Servers TRUE?

Sie können aber auch direkt den Code ohne Openquery wie unten ausführen:

EXEC [A].[database].[schema].sp_qa2 
+0

Ja, sie sind wahr. Ich weiß, dass ich es ausführen kann, indem ich ganzen 4 Namen zur Verfügung stelle. Ich möchte OPENQUERY machen, weil es in Bezug auf die Leistung besser ist – Sher

+0

Erhalten Sie denselben Fehler, indem Sie mit dem 4-teiligen Namen ausführen? – p2k

+0

Kein Fehler bei der Ausführung durch 4-teilige Benennung – Sher

0

Sie können außerdem versuchen:

EXEC(@sql) AT [RemoteServer] 
Verwandte Themen