web-dev-qa-db-ja.com

更新コードは手動のストアドプロシージャで機能しますが、SQL Serverエージェントジョブとして実行すると機能しません

既存のテーブルからすべてのレコードを削除し、新しいレコードを挿入するストアドプロシージャがあります。挿入後、1つのフィールドの値を変更するいくつかの更新操作があります。

SQL Serverエージェントジョブを実行すると、更新が行われません。更新コードを手動で選択して実行すると、更新が発生します。

ストアドプロシージャ全体を手動で実行すると、更新が発生します。

エラーはスローされません。すべては「機能」しますが、SQL Serverジョブを開始したときに更新が行われません。

1
unholymackerel

問題を解決しましたが、理解できません。

システムには、各テーブルに対応するビューがあります。ビューの1つが私のFOR XML PATHビューで使用されました。

Viewをno-permission Tableに置き換えたところ、うまくいきました。

ビューにはパブリックSELECT権限があります。テーブルには名前付き権限がありません。

SQL Serverエージェントジョブは、パブリックアクセス許可のため、ビューからSELECTできるはずですが、それはできません。

1
unholymackerel

SQLサーバーエージェントジョブによるホールドのテキストサイズの制限のためにジョブが更新コードを実行しなかったときに私があなたを正しく理解していることと私が目撃した場合:

したがって、SQLエージェントのデフォルトのTEXTSIZEは512であるため、SQLエージェントジョブを介して返されるデータの量を制限するなどの方法を試すことができます。

手動で正常に実行した後に取得する出力ごとにテキストサイズを指定できます。

詳細については、以下のリンクを参照してください。

http://www.mssqltips.com/sqlservertip/1398/limit-amount-of-data-returned-with-the-sql-server-textsize-command/

0
KASQLDBA