web-dev-qa-db-ja.com

SQLエージェントジョブではなく、手動で実行したときに動作するストアドプロシージャ

SQLエージェントジョブを介してストアドプロシージャを実行すると、次のエラーメッセージが表示されます。

ユーザーとして実行:NT AUTHORITY\SYSTEM。
XML解析:行10、文字33、予期しない入力の終了[SQLSTATE 42000](エラー9400)。
ステップが失敗しました。
SQL重大度16、SQLメッセージID 9400

しかし、手動で実行すると成功します。

これは私が実行している手順です:

decalre @URL VARCHAR(max)
 set @URL='http://www.spa.gov.sa/english/rss.xml'

 declare  @xmlT TABLE ( yourXML XML )
DECLARE @Response nvarchar(max)
DECLARE @XML xml
DECLARE @Obj int 
DECLARE @Result int 
DECLARE @HTTPStatus int 
DECLARE @ErrorMsg nvarchar(MAX)

EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT 

EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT 

INSERT @xmlT ( yourXML )
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'--, @Response OUT 


    INSERT into Tlb(discp , tit ,   datee,linkk)
    SELECT   N.C.value('description[1]', 'nvarchar(max)') discp,   N.C.value('title[1]', 'varchar(999)') tit,
    N.C.value('pubDate[1]', 'varchar(99)') datee,N.C.value('link[1]', 'varchar(999)') linkk
    FROM @xmlT CROSS APPLY yourXML.nodes('//channel/item') N(C)
4

GoogleジオコーディングとXML結果の解析時にも同じ問題が発生しました。 SQLジョブを介して実行すると、XML結果が切り捨てられていたようです。

ここで解決策を見つけました: http://www.progtown.com/topic376715-a-problem-with-spoagetproperty-p2.html

置く必要がありました:

SET TEXTSIZE 2147483647;

私のストアドプロシージャの開始時。

2
John

非常に特殊な状況では、完全に正しい答えは、ストアドプロシージャ内でTEXTSIZEを定義することです。

シナリオは、クエリがManagement Studioで問題なく実行されることです。 Management Studioではストアドプロシージャとして実行されますが、SQLジョブとして実行するとエラーが返され、SQLジョブ履歴に「予期しない入力の終了」が表示されます。私のエラーは1行目と512番の位置を返しましたが、これは重要に思われますが、他の位置で発生した他の多くの報告を見てきました。

上記の回答は完全に正しいものであり、新しいアカウントで可能だったとすれば、それを認めただけです。

これは、何時間にもわたって取り組んできた問題の答えを出した人に本当に感謝したいことの1つです。うまくいけば、誰かが利益を上げて、以前のポスターを本当にありがとう。

文字サイズを設定2147483647

1
T Wi

OLEオートメーションストアドプロシージャの場合、sysadminサーバーロールの一部であるユーザーとして実行する必要があります。現在、失敗し、正しいXMLを形成しないと思います。ジョブを実行します。別のユーザーとしてステップし、問題が解決するかどうかを確認します。

From [〜#〜] bol [〜#〜]

権限sysadmin固定サーバーロールのメンバーシップが必要です。

0
Marian