[SQL] SQL 서버는 웹 요청을 보낼 수 있습니까?
SQLSQL 서버는 웹 요청을 보낼 수 있습니까?
나는 SQL Server 데이터베이스와 로컬 네트워크에 인트라넷 웹 응용 프로그램이 있습니다. 인트라넷 웹 응용 프로그램 레코드를 작성하고 데이터베이스에 전송합니다. 내가 로컬 네트워크에서 SQL Server 데이터베이스를 사용하여 새 레코드를 보내 싶으면 인터넷 웹 응용 프로그램이 있습니다.
내가 가지고있는 유일한 옵션은 HTTP POST를 요청 또는 url을 호출의 일종을 사용하여 인터넷 웹 응용 프로그램에 새 레코드를 보내드립니다 로컬 SQL 서버에 트리거를 만드는 것입니다, 그래서 나는 여러 가지 이유로 인트라넷 웹 응용 프로그램을 변경 / 수정할 수 없습니다 .
인터넷 웹 응용 프로그램은 공개적으로 액세스 할 수있는 URL (예를 들어, http://www.example.com/records/new)에 양식을 게시를 통해 새 레코드를받을 수있는 편안하고 API를 사용하여 설정됩니다.
SQL 서버에서 수행 할 수있는 URL을 통해 데이터 (XML, JSON, URL에 일반 변수)를 전송하는 경우 사람의 노하우를합니까?
어떤 생각을 주셔서 감사합니다!
해결법
-
==============================
1.그것은 가능하지만, 현실 세계에서 조금 더 당신이 상상 순진한 접근 방식보다 복잡하다. 주로, HTTP 요청에 대한 트리거 대기를 가지고 받아 들일 수 :
그것은 가능하지만, 현실 세계에서 조금 더 당신이 상상 순진한 접근 방식보다 복잡하다. 주로, HTTP 요청에 대한 트리거 대기를 가지고 받아 들일 수 :
용액 큐를 통해 HTTP 요청에서 트리거를 분리하는 것이다. 트리거는 로컬 큐와 커밋에 요청을 큐에 넣 대기열 해제에게 이러한 요청과 문제 HTTP 요청을 처리하는 별도의 조각 동안. 이 해결할 수있는 문제 두 문제는 위에서 지적했다. 당신은 (대기열로 표를 사용 참조) 큐에 대한 일반 테이블을 사용하거나 서비스 브로커 잘 모두 일을 사용할 수 있습니다.
이제이 요청을 큐에서 실제로 HTTP 호출을하는 방법에, 나는 강하게 전용 프로세스를 사용하는 것이 좋습니다 (예.이 목적을 위해 전용 응용 프로그램). 이 SQLCLR를 사용하는 것이 가능하지만, 그것은 아주 나쁜 선택이 될 것입니다. SQL Server 리소스 (특히 노동자) 인터넷 응답을 기다리고에 낭비 훨씬 소중한한다.
-
==============================
2.좋은 (오히려 안정적이고 확장) 옵션으로, 당신은 웹 응용 프로그램 / 웹 서비스와 상호 작용하는 SQL CLR을 사용할 수 있습니다.
좋은 (오히려 안정적이고 확장) 옵션으로, 당신은 웹 응용 프로그램 / 웹 서비스와 상호 작용하는 SQL CLR을 사용할 수 있습니다.
예를 들어, "SQL CLR WebRequest 클래스"또는 "SQL CLR WCF"를 검색합니다.
-
==============================
3.먼저 추적을
먼저 추적을
sp_configure 'show advanced options', 1; go RECONFIGURE; go GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO
그런 다음 함수를 만듭니다
create 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
같은 사용 :
select dbo.GetHttp('http://127.0.0.1/mywebpage.php')
-
==============================
4.이 CLR 저장 프로 시저 SQL-APIConsumer를 사용하여 시도 할 수 있습니다.
이 CLR 저장 프로 시저 SQL-APIConsumer를 사용하여 시도 할 수 있습니다.
그것은 당신이 단지 매개 변수 또는 통과 배수 헤더를 요구하고 인증 토큰 것을 가장 단순한 API를 호출 할 수 있도록 여러 방법이있다.
from https://stackoverflow.com/questions/5983599/can-sql-server-send-a-web-request by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 GROUP BY 날짜 시간 +/- 삼초 (0) | 2020.06.09 |
---|---|
[SQL] 어떻게 JPA 명명 된 쿼리의 IN 절에서 동적 매개 변수를 사용하는 방법? (0) | 2020.06.09 |
[SQL] MS SQL Server에 RODBC 임시 테이블 문제를 연결할 때 (0) | 2020.06.09 |
[SQL] 어떻게 MAX (날짜)에 의해 선택하는 방법? (0) | 2020.06.09 |
[SQL] MySQL은 별개의 2 열 조합을 선택 (0) | 2020.06.09 |