LZ在做一個job執行每天新增一個表的操作時,存儲過程運行沒問題,job也創建成功,但運行job時,卻報錯: ,后又用sys用戶登陸創建了同樣的存儲過程和job,結果可以執行成功。當時就猜測是權限問題。后在網上搜索發現,這是因為存儲過程中執行的是DDL命令,
LZ在做一個job執行每天新增一個表的操作時,存儲過程運行沒問題,job也創建成功,但運行job時,卻報錯:
,后又用sys用戶登陸創建了同樣的存儲過程和job,結果可以執行成功。當時就猜測是權限問題。后在網上搜索發現,這是因為存儲過程中執行的是DDL命令,
當前用戶沒有執行DDL的權限,引用另一篇文章中的內容如下:
總結,角色resource里也包括了create table的權限,但是執行過程(該過程為一個創建表的過程)報錯,而我們直接給用戶hat授予create table權限,執行該過程則成功執行,
此處說明用戶的角色權限是不可以繼承到存儲過程里面的,只有對用戶授予直接的系統權限,存儲過程才可繼承。
最終,執行了賦權限給了當前用戶,這樣就可以正常執行了這個job了。
總結,存儲過程和job在執行DDL命令時,都需要其所有者擁有執行 DDL命令的權限。