Wie kann ich HTTP-Anforderung von SQL server?

Wollte ich senden Sie eine HTTP-Anforderung von SQL server auf dem Tomcat-server. Ich habe installiert den SQL server express 2012 und nicht .NET-Anwendung, die in Tomcat-server. Ich habe durch das wie Stellen Sie eine HTTP-Anforderung von SQL server

So wie es in dem obigen Artikel, "Das COM-Objekt WinHttp.WinHttpRequest.5.1 muss auf dem server installiert werden, einige typische Variationen sind WinHttp.WinHttpRequest.5".
Ich habe heruntergeladen winhttp.zip aus der winhttp download-link, gefunden winhttp.dll in den zip-Ordner und klebte es in C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn wie vorgeschlagen, in diesem msdn-link.

Folgenden, die gleichen Ratschläge, die ich durchgeführt habe folgende Zeile in SSMS:

sp_addextendedproc 'GetHttp',
 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn\winhttp.dll';

Habe ich auch ausgeführt, den folgenden code in SSMS, wie gesagt, in "eine HTTP-Anforderung von 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

Dann bekomme ich die Fehlermeldung

Msg 2010, Ebene 16, Status 1, Prozedur GetHttp, Zeile 2

Nicht durchführen, alter on 'GetHttp' denn es ist ein nicht kompatibler Objekttyp.

Ich weiß nicht, wie Aufruf der Funktion zum senden der HTTP-Anforderung. Ich nehme an, es ist so etwas wie das GetHttp('http://www.google.co.in/').

Was bin ich?

  • Nicht. Einfach nicht. Dies ist nicht das, was SQL-Server vorgesehen ist.
  • Dies ist ein klassisches "wenn man einen hammer hat, sieht man die Nägel" - Konzept, das NICHT zu tun
  • Prajdic meine Forderung ist, es gibt zwei verschiedene Datenbanken auf verschiedenen Servern(A und B) und einen tomcat-server-Anwendung. Wenn es irgendeine änderung in der DB EIN, die es sendet http-Anfrage an den tomcat-server-Anwendung, Anwendung in tomcat-server, Berechnung und Speicherung von Daten in DB B. Also hier muss ich den Aufruf der Anwendung von sql server, Da die Benutzer nicht ganz haben Zugriff auf app-tomcat-server.
  • Schlagen Sie mich auf andere Ideen.
  • Check-out powershell - es hat Befehle für den Zugriff auf die Webseite und kann aufgerufen werden von sql server
  • Kannst du nicht das mit den verknüpften Servern?
  • soweit ich das verstanden habe Verbindungsserver ist mehr über die Kommunikation zwischen Datenbank-Server. aber hier, was ich will, ist die Kommunikation zwischen Datenbank-server und Applikations-server.
  • Okay, ich dachte, Sie wollten zum aktualisieren von Daten auf die anderen DB-server, wenn es auf dem anderen verändert wurde
  • Wie pro meine Kenntnisse über powershell die Automatisierung verschiedener Aufgaben, wie kann ich das senden von http-request zu remote-server von Powershell dann. Wenn ich falsch korrigiert mich.
  • Wie jeder andere sagte, das ist eine schlechte Idee. SQL-Server-query-Benachrichtigungen, damit die Anwendung weiß, wenn die Daten geändert hat, aber es sieht nicht wie JDBC unterstützt. Sie können die application-server-poll-DB für Veränderungen.
  • Wie @jtseng erwähnt, Sie könnte möglicherweise haben die app Umfrage für änderungen, evtl. mit einer "receive from" - Abfrage wie hier beschrieben: msdn.microsoft.com/en-us/library/ms130764.aspx
  • Wenn ich die Abfrage Benachrichtigung, dann kann ich Sie nicht initialisieren app von tomcat-server aus dem sql server. Gibt es irgendeine andere Idee zu initialisieren app von sql server als http-request.
  • Powershell hat: Invoke-WebRequest und Invoke-RestMethod
  • Kann jemand erklären, warum es eine schlechte Idee, es zu tun auf diese Weise. Ich merke, dass es ein Sicherheitsrisiko zu ermöglichen, SQL-server, Active-X-Zugriff. Klar wäre es immer ein vorrangiges Anliegen, die option gar nicht möglich wäre. Könnte dieser hack gerechtfertigt sein, wenn ein Unternehmen verwendet es nur einmal oder zweimal, und nicht noch eine eigene Powershell-Fähigkeiten "hammer" als jemand, der eloquent oben?
  • Um klar zu sein, ich bin echt Fragen, für weitere Informationen über was ist Los mit ihm, anstatt zu versuchen, einen Punkt zu machen.
  • Zum Beispiel: in meinem Unternehmen werden wir nicht ändern können .NET-code, aber wir können erstellen, speichern von Prozeduren und Triggern, so dass das einzige, was zu tun ist, das aufrufen der web-Dienst aus dem sql-server.
  • Ich habe getan, SOAP-POST-Aufrufe von DB2, bevor die auf Unternehmensebene zu vermeiden, schreiben einen Stapel von Programmen, das gleiche zu tun. Sehen Sie Ihre Sicherheit, aber wenn, dass ist nicht das, was der SQL-engine ist - warum kann es tun, es [jetzt]?

InformationsquelleAutor niren | 2013-07-01
Schreibe einen Kommentar