2012-12-19 114 views
1

我有一個存儲過程來簡單地在CRM2011 SQL Server上運行一系列UPDATE語句。目標是通過SQL Server代理作業每30分鐘運行一次。存儲過程不期望任何參數。SQL Server代理作業完成但存儲過程不運行

我創建了作業並添加了一個步驟來調用T-SQL語句「EXEC mystoredprocname」。我右鍵單擊並「在此步驟啓動作業」併成功完成。但是,沒有任何更新反映在數據庫中。

如果我在查詢行中手動運行「EXEC mystoredprocname」,它會正常執行並且數據庫按預期更新。

這看起來應該是非常簡單的事情,所以我不確定我的過程中發生故障的位置。

+0

你有沒有設置作業步驟正確的數據庫? –

+0

是的,我可以確認作業設置爲正確的數據庫。我也嘗試使用'master'並將「USE 」放入我的T-SQL語句中 – Cory

+0

聞起來像是一個權限問題。 HTTP://blogs.lessthandot。com/index.php/DataMgmt/DBAdmin/sql-server-dba-tips -sql-agent-job-ownership –

回答

1

正如你在你的存儲過程使用過濾視圖您的意見提了,我相當願意打賭,你是不是運行的時間表,誰通過Windows身份驗證對用戶進行認證,並具有正確的CRM權限,因爲如前所述,過濾視圖實現了CRM基於Windows的身份驗證模型。

所以,我有三點建議:

  1. 仔細檢查,以確保該時間表的Windows帳戶誰具有正確的讀權限的CRM用戶的下運行。

  2. 由於您致力於直接更新表格,因此您希望使用過濾視圖的唯一原因是因爲它會爲您檢索OptionSet的字符串表示形式。您可以直接查詢StringMap表並引用常規視圖,對於這些視圖,您不需要成爲CRM用戶即可訪問。您也會注意到速度的提高,因爲過濾視圖會因安全檢查而變慢。

  3. 如果你是而不是承諾直接更新表,爲什麼不重寫你的存儲過程作爲一個小應用程序,你可以安排每30分鐘更新一次?除非你有大量的三角洲,否則這應該是首選的方法。您可以從CRM Web服務中獲得內置驗證模型的優勢,儘管您失去了基於集合的方法的好處,但我認爲第三方系統的優勢大於潛在黑客的缺點並在系統中破解。如果您不是.NET開發人員(即使您是開發人員),CRM SDK也有許多可幫助您入門的示例。

下面是一些與我上面的觀點相關的其他問題,可能會對您有所幫助。

+0

這工作完美。我將#2作爲短期解決方案實施,目標是將其移到#3的道路上。謝謝大家的幫助。 – Cory

相關問題