3

次のコードを使用して、SQL Server 2008 の URL から JSON データを読み取ろうとしています。

DECLARE @temp table (RowNum int, DATA NVARCHAR(max))
DECLARE @url VARCHAR(MAX),
@win INT,
@hr INT,
@Text VARCHAR(8000),
@RowID int,
@Status smallint,
@Accuracy tinyint

Set @url = 'http://www.jsonprovider.com/api/json/2020'
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 OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr = sp_OADestroy @win 
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

select  @Text  --<< Result

そして、結果が得られます。

問題は、この結果を取得するプロセスが SQL Server で 7 秒かかることですが、C# アプリケーションによる通常の呼び出しと Web ブラウザーでの呼び出しでは、0.06 秒で結果が得られます。

迅速な結果を得るためにコードを改善するためのソリューションを探しています。

4

2 に答える 2

2

EJ はそれを非常によく説明しました。私は彼に同意します。

すべてをデータベース コードに保持したい場合は、基本的に C# で記述されているが SQL Server 内で動作するCLR プロシージャを試すことができます。

C# でこれを行う方法の詳細については、これらのリンクを参照してください。

post による HTTP リクエスト
Visual C# を使用して GET リクエストを作成する方法

于 2013-10-11T13:47:04.843 に答える