Je voudrais ex=E9cuter si possible un select sur le r=E9sultat=20
de l'ex=E9cution d'une proc=E9dure stock=E9e syst=E8me par exemple
r=E9cup=E9rer uniquement "hostname" quand on lance exec sp_who
=3D=3D>
select=20
t.hostname =20
from=20
(exec sp_who) t
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut!
J'suis justement en train de chercher de l'info là dessus.. j'ai découvert (ENFIN!!!) qu'on pouvait faire un INSERT / EXEC... : --- create procedure dbo.p as select 15 go create table #t(i int) go insert #t exec p go select * from #t go drop table #t go drop procedure p go ---
mais maintenant je cherches à éviter l'étape de la création de la table temporaire parce que c'est peu pratique, si vous avez idées... ;O)
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "r rebeyrotte" a écrit dans le message de news:12a601c46f1d$b83dd050$ Je voudrais exécuter si possible un select sur le résultat de l'exécution d'une procédure stockée système par exemple récupérer uniquement "hostname" quand on lance exec sp_who
==> select t.hostname from (exec sp_who) t
Mais ça ne fonctionne pas...
Salut!
J'suis justement en train de chercher de l'info là dessus.. j'ai découvert
(ENFIN!!!) qu'on pouvait faire un INSERT / EXEC... :
---
create procedure dbo.p
as
select 15
go
create table #t(i int)
go
insert #t exec p
go
select * from #t
go
drop table #t
go
drop procedure p
go
---
mais maintenant je cherches à éviter l'étape de la création de la table
temporaire parce que c'est peu pratique, si vous avez idées... ;O)
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"r rebeyrotte" <anonymous@discussions.microsoft.com> a écrit dans le message
de news:12a601c46f1d$b83dd050$a401280a@phx.gbl...
Je voudrais exécuter si possible un select sur le résultat
de l'exécution d'une procédure stockée système par exemple
récupérer uniquement "hostname" quand on lance exec sp_who
J'suis justement en train de chercher de l'info là dessus.. j'ai découvert (ENFIN!!!) qu'on pouvait faire un INSERT / EXEC... : --- create procedure dbo.p as select 15 go create table #t(i int) go insert #t exec p go select * from #t go drop table #t go drop procedure p go ---
mais maintenant je cherches à éviter l'étape de la création de la table temporaire parce que c'est peu pratique, si vous avez idées... ;O)
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "r rebeyrotte" a écrit dans le message de news:12a601c46f1d$b83dd050$ Je voudrais exécuter si possible un select sur le résultat de l'exécution d'une procédure stockée système par exemple récupérer uniquement "hostname" quand on lance exec sp_who
==> select t.hostname from (exec sp_who) t
Mais ça ne fonctionne pas...
Zoury
reSalut! :O)
Je me suis informer auprès de nos collègues anglophones. oj m'a suggéré un "loopback" server (serveur local pointant sur lui même) accompagné de la méthode OPENQUERY() :
voici exemple un basé sur l'autre d'avant : --- -- on ajoute le loopback linked server sp_addlinkedserver @server = N'MyLinkName', @srvproduct = N' ', @provider = N'SQLOLEDB', @datasrc = N'MyServerName', @catalog = N'MyCatalog' go -- on permet l'accès au donnée sur le linked server exec sp_serveroption 'MyLinkName', 'data access', 'true' go -- créer une procédure stockée create procedure p as select 1 as Value go -- exécute la procédure et envoi -- les données dans la table #t select Value into #t from openquery(MyLinkedServer, 'exec dbo.p')t go -- affiche le résultat de la requête select * from #t go -- on libère les ressources.. drop table #t go drop procedure p go sp_dropserver 'MyLinkName' go ---
oj recommande aussi l'usage de l'option fmtonly si la procédure stockée utilise des tables temporaires, ainsi la requête deviendrait : --- select Value into #t from openquery(MyLinkedServer, 'set fmtonly on; exec dbo.p')t ---
Je me suis informer auprès de nos collègues anglophones. oj m'a suggéré un
"loopback" server (serveur local pointant sur lui même) accompagné de la
méthode OPENQUERY() :
voici exemple un basé sur l'autre d'avant :
---
-- on ajoute le loopback linked server
sp_addlinkedserver @server = N'MyLinkName',
@srvproduct = N' ',
@provider = N'SQLOLEDB',
@datasrc = N'MyServerName',
@catalog = N'MyCatalog'
go
-- on permet l'accès au donnée sur le linked server
exec sp_serveroption 'MyLinkName', 'data access', 'true'
go
-- créer une procédure stockée
create procedure p
as
select 1 as Value
go
-- exécute la procédure et envoi
-- les données dans la table #t
select Value
into #t
from openquery(MyLinkedServer, 'exec dbo.p')t
go
-- affiche le résultat de la requête
select * from #t
go
-- on libère les ressources..
drop table #t
go
drop procedure p
go
sp_dropserver 'MyLinkName'
go
---
oj recommande aussi l'usage de l'option fmtonly si la procédure stockée
utilise des tables temporaires, ainsi la requête deviendrait :
---
select Value
into #t
from openquery(MyLinkedServer, 'set fmtonly on; exec dbo.p')t
---
Je me suis informer auprès de nos collègues anglophones. oj m'a suggéré un "loopback" server (serveur local pointant sur lui même) accompagné de la méthode OPENQUERY() :
voici exemple un basé sur l'autre d'avant : --- -- on ajoute le loopback linked server sp_addlinkedserver @server = N'MyLinkName', @srvproduct = N' ', @provider = N'SQLOLEDB', @datasrc = N'MyServerName', @catalog = N'MyCatalog' go -- on permet l'accès au donnée sur le linked server exec sp_serveroption 'MyLinkName', 'data access', 'true' go -- créer une procédure stockée create procedure p as select 1 as Value go -- exécute la procédure et envoi -- les données dans la table #t select Value into #t from openquery(MyLinkedServer, 'exec dbo.p')t go -- affiche le résultat de la requête select * from #t go -- on libère les ressources.. drop table #t go drop procedure p go sp_dropserver 'MyLinkName' go ---
oj recommande aussi l'usage de l'option fmtonly si la procédure stockée utilise des tables temporaires, ainsi la requête deviendrait : --- select Value into #t from openquery(MyLinkedServer, 'set fmtonly on; exec dbo.p')t ---