Rückgaben von Stored Procedures ad hoc weiterverarbeiten

Wenn man die Rückgabe eines Resultsets einer Stored Procedure ad hoc in einer neuen Tabelle oder direkt weiterverarbeiten möchte, kann man mit Hilfe von OPENROWSET (siehe Hilfe, Ad Hoc Distributed Queries müssen erlaubt sein) ein wenig tricksen:

Der Einfachheit halber habe ich für das Beispiel die Stored Procedure sp_help verwendet:

Rückgabe in eine Tabelle schreiben

select *

into #t1

from openrowset

(

'SQLNCLI',

'Server=MeinServer\MeineInstanz;Trusted_Connection=yes;',

'exec sp_help;'

) as a;


select * from #t1

go


drop table #t1

go

oder einfach als Funktion weiterverwenden

create function dbo.fn_help()

returns table

as

return

(

select *

from openrowset

(

'SQLNCLI',

'Server=MeinServer\MeineInstanz;Trusted_Connection=yes;',

'exec sp_help;'

) as a

);

go

select * from dbo.fn_help()

drop function dbo.fn_help

Dieses Vorgehen sollte aber die Ausnahme bleiben, ad hoc eben.

Ergänzend siehe auch

http://www.insidesql.org/blogs/uricken/2010/08/20/verwendung-von-udf-auf-linked-server

 

Viele Grüße

Christoph Ingenhaag