복붙노트

[SQL] SQL 서버는 웹 요청을 보낼 수 있습니까?

SQL

SQL 서버는 웹 요청을 보낼 수 있습니까?

나는 SQL Server 데이터베이스와 로컬 네트워크에 인트라넷 웹 응용 프로그램이 있습니다. 인트라넷 웹 응용 프로그램 레코드를 작성하고 데이터베이스에 전송합니다. 내가 로컬 네트워크에서 SQL Server 데이터베이스를 사용하여 새 레코드를 보내 싶으면 인터넷 웹 응용 프로그램이 있습니다.

내가 가지고있는 유일한 옵션은 HTTP POST를 요청 또는 url을 호출의 일종을 사용하여 인터넷 웹 응용 프로그램에 새 레코드를 보내드립니다 로컬 SQL 서버에 트리거를 만드는 것입니다, 그래서 나는 여러 가지 이유로 인트라넷 웹 응용 프로그램을 변경 / 수정할 수 없습니다 .

인터넷 웹 응용 프로그램은 공개적으로 액세스 할 수있는 URL (예를 들어, http://www.example.com/records/new)에 양식을 게시를 통해 새 레코드를받을 수있는 편안하고 API를 사용하여 설정됩니다.

SQL 서버에서 수행 할 수있는 URL을 통해 데이터 (XML, JSON, URL에 일반 변수)를 전송하는 경우 사람의 노하우를합니까?

어떤 생각을 주셔서 감사합니다!

해결법

  1. ==============================

    1.그것은 가능하지만, 현실 세계에서 조금 더 당신이 상상 순진한 접근 방식보다 복잡하다. 주로, HTTP 요청에 대한 트리거 대기를 가지고 받아 들일 수 :

    그것은 가능하지만, 현실 세계에서 조금 더 당신이 상상 순진한 접근 방식보다 복잡하다. 주로, HTTP 요청에 대한 트리거 대기를 가지고 받아 들일 수 :

    용액 큐를 통해 HTTP 요청에서 트리거를 분리하는 것이다. 트리거는 로컬 큐와 커밋에 요청을 큐에 넣 대기열 해제에게 이러한 요청과 문제 HTTP 요청을 처리하는 별도의 조각 동안. 이 해결할 수있는 문제 두 문제는 위에서 지적했다. 당신은 (대기열로 표를 사용 참조) 큐에 대한 일반 테이블을 사용하거나 서비스 브로커 잘 모두 일을 사용할 수 있습니다.

    이제이 요청을 큐에서 실제로 HTTP 호출을하는 방법에, 나는 강하게 전용 프로세스를 사용하는 것이 좋습니다 (예.이 목적을 위해 전용 응용 프로그램). 이 SQLCLR를 사용하는 것이 가능하지만, 그것은 아주 나쁜 선택이 될 것입니다. SQL Server 리소스 (특히 노동자) 인터넷 응답을 기다리고에 낭비 훨씬 소중한한다.

  2. ==============================

    2.좋은 (오히려 안정적이고 확장) 옵션으로, 당신은 웹 응용 프로그램 / 웹 서비스와 상호 작용하는 SQL CLR을 사용할 수 있습니다.

    좋은 (오히려 안정적이고 확장) 옵션으로, 당신은 웹 응용 프로그램 / 웹 서비스와 상호 작용하는 SQL CLR을 사용할 수 있습니다.

    예를 들어, "SQL CLR WebRequest 클래스"또는 "SQL CLR WCF"를 검색합니다.

  3. ==============================

    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. ==============================

    4.이 CLR 저장 프로 시저 SQL-APIConsumer를 사용하여 시도 할 수 있습니다.

    이 CLR 저장 프로 시저 SQL-APIConsumer를 사용하여 시도 할 수 있습니다.

    그것은 당신이 단지 매개 변수 또는 통과 배수 헤더를 요구하고 인증 토큰 것을 가장 단순한 API를 호출 할 수 있도록 여러 방법이있다.

  5. from https://stackoverflow.com/questions/5983599/can-sql-server-send-a-web-request by cc-by-sa and MIT license