문제

SQL 저장 프로 시저 또는 함수에서 웹 서비스로 호출하는 방법이 있습니까?

도움이 되었습니까?

해결책

예, 다음과 같이 만들 수 있습니다. 라코 디스

다른 팁

물론 할 수 있습니다 .하지만 이것은 끔찍한 생각입니다.

웹 서비스 호출은 임의의 시간이 소요될 수 있으며, 당시 네트워크에서 얼마나 많은 반격 게임이 진행되고 있는지에 따라 무작위로 실패 할 수 있으므로 시간이 얼마나 걸릴지 알 수 없습니다.

최소한의 경우 XML을 빌드 할 때까지 약 0.5 초가 걸리고 HTTP 요청을 원격 서버로 보낸 다음 XML을 구문 분석하고 응답을 다시 보내야합니다.

  1. 어느 응용 프로그램이 웹 서비스를 실행 시키게 한 INSERT INTO BLAH 쿼리를 수행했는지는 완료 될 때까지 기다려야합니다. 이것이 매일 예약 된 작업과 같이 백그라운드에서만 발생하는 일이 아니라면 앱 성능이 폭발 할 것입니다.

  2. 웹 서비스 호출 코드는 SQL 서버 내부에서 실행되며 리소스를 사용합니다. HTTP 요청을 기다리는 데 시간이 오래 걸리므로 많은 리소스를 사용하게되어 서버 성능이 다시 저하됩니다.

T-SQL 코드 자체가 아니라 SQL Server 2005 이상에서는 기본적으로 .NET 코드의 기능인 CLR 저장 프로 시저를 작성한 다음 사용할 수 있도록 저장 프로 시저로 노출하는 기능을 사용할 수있게되었습니다.이를 위해 대부분의 .NET 프레임 워크를 손쉽게 사용할 수 있으므로이를 통해 가능한 웹 서비스 소비를 확인할 수 있습니다.

여기에서 자세히 논의하기에는 다소 시간이 걸리지 만 여기에 MSDN 기사

나는 교통량이 많거나 업무상 중요한 일을 위해이 작업을 수행하지 않을 것입니다. 그러나 서비스에서 피드백을받을 필요가 없다면 실제로 수행하는 것이 좋습니다.

다음은 제가 한 일의 예입니다.

  1. 트리거 삽입 및 테이블 업데이트
  2. 트랜잭션의 JSON 데이터를 Web Api 엔드 포인트로 전달한 다음 AWS의 MongoDB에 삽입하는 Stored Proc라는 트리거입니다.

    이전 XML을 사용하지 마십시오

    JSON 라코 디스

    전체 예 : 라코 디스

이전 버전의 Sql에서는 확장 저장 프로 시저 또는 xp_cmdshell을 사용하여 웹 서비스를 셸 아웃하고 호출 할 수있었습니다.

둘 다 괜찮은 아키텍처처럼 들리지는 않지만 때로는 미친 짓을해야합니다.

포함 된 VB 개체를 사용하여 수행 할 수 있습니다.

먼저 'MSXML2.XMLHttp'유형의 VB 개체 하나를 만들고 모든 쿼리에이 개체 하나를 사용합니다 (성능 저하가 예상 될 때마다 다시 만드는 경우).

그런 다음 해당 개체와 일부 매개 변수를 개체에 대해 sp_OAMethod를 호출하는 저장 프로 시저에 제공합니다.

정확하지 않은 예를 들어 죄송합니다. 빠른 Google 검색을 통해 vb-script 메서드가 어떻게 수행되는지 알 수 있습니다.

-

하지만 CLR 버전은 훨씬 .... 훨씬 쉽습니다. 웹 서비스 호출의 문제점은 DB 엔진과 보조를 맞출 수 없다는 것입니다. 따라 잡을 수없는 많은 오류가 발생합니다.

웹 서비스는 매번 새로운 연결이 필요합니다. 다중성이 작용합니다. 테이블에 대한 함수 호출을 서비스하기 위해 5000 개의 소켓 연결을 열고 싶지는 않습니다. 완전 미쳤어!

이 경우 사용자 지정 집계 함수를 만들고이를 인수로 사용하여 결과 집합을 반환하는 웹 서비스에 전달해야합니다. 그런 다음이를 대조해야합니다. 데이터를 얻는 것은 정말 어색한 방법입니다.

SQL 2000 호환성 수준으로 작업 중이고 clr 통합을 수행 할 수없는 경우 http://www.vishalseth.com/post/2009/12/22/Call-a-webservice-from-TSQL-(저장 절차) -using-MSXML.aspx

저는 Oracle 데이터베이스를 사용하여 전 세계의 대기업 / 글로벌 기업에서 일하고 있습니다.우리는 매장 절차가있는 DB를 통해 웹 서비스를 항상 소비하고 있으며 트래픽이 많은 경우에도 문제가 없습니다.모두 내부 사용을 위해 인터넷에 액세스 할 수 없으며 공장 내부에서만 사용할 수 있습니다.나는 그것을 사용하는 것이 좋지만 그것을 디자인하는 방법에 대해 정말로 신중을 기하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top