Comment puis-je faire la demande HTTP à partir de SQL server?
J'ai voulu envoyer une requête HTTP à partir de SQL server pour serveur Tomcat. J'ai installé SQL server 2012 express et non .NET application dans le serveur Tomcat. J'ai vécu cela comme Faire une requête HTTP à partir de SQL server
Comme il est dit dans l'article ci-dessus, "L'objet COM WinHttp.WinHttpRequest.5.1 doit être installé sur le serveur, certains écarts types sont WinHttp.WinHttpRequest.5".
J'ai téléchargé winhttp.zip à partir de la winhttp lien de téléchargement, trouvé winhttp.dll dans le dossier zip et collé dans C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn
comme il est suggéré dans ce msdn lien.
Suivant le même avis, j'ai exécuté à la suite de la ligne dans SSMS:
sp_addextendedproc 'GetHttp',
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn\winhttp.dll';
J'ai aussi exécuté le code suivant dans SSMS comme dit dans le "Faire une requête HTTP à partir de SQL server link":
Alter function GetHttp
(
@url varchar(8000)
)
returns varchar(8000)
as
BEGIN
DECLARE @win int
DECLARE @hr int
DECLARE @text varchar(8000)
EXEC @hr=sp_OACreate 'WinHttp.WinHttpRequest.5.1',@win OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win, 'Open',NULL,'GET',@url,'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win,'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAGetProperty @win,'ResponseText',@text OUTPUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OADestroy @win
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
RETURN @text
END
Puis-je obtenir de l'erreur
Msg 2010, Niveau 16, État 1, Procédure GetHttp, Ligne 2
Ne peut pas effectuer de modifier sur "GetHttp" parce que c'est un incompatible type d'objet.
Je ne sais pas comment appeler la fonction pour envoyer la requête HTTP. Je suppose que c'est quelque chose comme cela GetHttp('http://www.google.co.in/')
.
Ce qui me manque?
C'est un classique "quand vous avez un marteau, tout ce que vous voyez est des clous" concept, ne le faites PAS
Comme tout le monde l'a dit, c'est une mauvaise idée. SQL Server a les notifications de requête pour permettre à l'application de savoir quand les données ont changé, mais il ne ressemble pas à JDBC supporte. Vous pouvez avoir le serveur de l'application de sondage la base de données pour les changements.
Comme @jtseng mentionné, vous pourriez peut-être avoir l'application de sondage pour les changements, peut-être l'aide d'un "recevoir à partir de la requête" comme décrit ici: msdn.microsoft.com/en-us/library/ms130764.aspx
Quelqu'un peut-il expliquer pourquoi c'est une mauvaise idée de faire de cette façon. Je me rends compte que c'est un problème de sécurité pour permettre de SQL server Active X accès. En clair, si elle ont toujours été une préoccupation première, l'option ne serait pas possible. Ce hack est justifiable que si une entreprise a utilisé qu'une ou deux fois et n'a pas encore une Powershell compétences "marteau" comme quelqu'un l'éloquence de le passer par-dessus?
OriginalL'auteur niren | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
J'ai eu une autre réponse. J'ai créé la procédure comme suit
J'ai appelé la procédure stockée avec l'url
Merci les gars de me faire travailler.
SQL Server blocked access to procedure 'sys.sp_OACreate' of component 'Ole Automation Procedures' because this component is turned off as part of the security configuration for this server.
Ce lien devrait vous aider à obtenir passé l'a bloqué l'accès à la procédure d'erreur. sqlsolace.blogspot.com/2009/09/...
elle renvoie la valeur 0, mais mon api rest json renvoyé un...
OriginalL'auteur niren
J'ai eu la réponse par powershell. Ce que j'ai fait est ouvert powershell dans sql server puis j'ai fait exécuter le code suivant dans powershell.
OriginalL'auteur niren
Qui m'a vraiment aidé @niren.
Pensé que je poste mon amendement qui le met en fonction scalaire et vous permet d'obtenir la réponse du service. Seul inconvénient, c'est scalaire funcs ne peut pas raiserrors donc il ya quelque chose à penser au sujet de la capture ailleurs.
OriginalL'auteur Adamantish
Ce monstre pour mes propres besoins
OriginalL'auteur Arthur