Sql-Server

更新程式碼在手動儲存過程中有效,但在作為 SQL Server 代理作業執行時無效

  • December 7, 2016

我有一個儲存過程,它從現有表中刪除所有記錄,然後插入新記錄。插入後,我有幾個更新操作會更改一個欄位的值。

如果我執行 SQL Server 代理作業,則不會發生更新。如果我手動選擇並執行更新程式碼,則會發生更新。

如果我手動執行整個儲存過程,則會發生更新。

沒有錯誤被拋出;一切正常,但當我啟動 SQL Server 作業時不會發生更新。

我解決了這個問題 - 但不明白。

系統對每個Table都有一個View。我的 FOR XML PATH 視圖中使用了其中一個視圖。

我用無權限表代替了視圖,它可以工作。

該視圖具有公共 SELECT 權限。該表沒有命名權限。

我認為由於公共權限,SQL Server 代理作業應該能夠從視圖中選擇,但它不能。

如果我說得對,並且由於 sql server 代理作業保留的文本大小限制,作業沒有執行更新程式碼時我還目睹了:

因此,您可以嘗試限制通過 sql 代理作業返回的數據量,因為 SQL 代理的預設 TEXTSIZE 為 512。

您可以根據手動執行成功後獲得的輸出指定文本大小。

有關更多資訊,請參閱以下連結:

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

引用自:https://dba.stackexchange.com/questions/89587