我目前正在從事一項任務,其中我需要從CLR存儲過程調用Web服務中的方法。SQL CLR存儲過程和Web服務
一點背景:
基本上,我有一個需要運算的ALOT任務。如果在SQL中嚴格執行,則需要大約30-45分鐘的時間來處理。如果我將相同的過程放入代碼中,由於能夠更高效地優化處理,我可以在幾秒鐘內完成它。唯一的問題是我必須將此過程設置爲SQL Server中的自動化任務。
就這一點而言,我已經將該流程公開爲Web服務(我也將其用於其他事情),並希望SQL CLR sproc使用該服務並執行代碼。這使我能夠完成自動化任務。
問題:
我已閱讀關於如何消耗在CLR存儲過程的網絡服務,並已經這樣做了用途不同相當多的不同的主題。這是我所遵循的一個例子。
http://blog.hoegaerden.be/2008/11/11/calling-a-web-service-from-sql-server-2005/
我能得到這個例子沒有任何問題的工作。但是,每當我將這個過程與一個涉及數據庫調用的Web服務方法配對時,我會得到以下例外(取決於是否包裝在try/catch中):
Msg 10312,Level 16,State 49,過程usp_CLRRunDirectSimulationAndWriteResults,行0 .NET Framework執行被中止。 UDP/UDF/UDT沒有恢復線程令牌。
或
消息6522,級別16,狀態1,過程MyStoredProc,行0
的用戶執行過程中發生.NET框架誤差定義 例程或聚合MyStoredProc':
System.Security.SecurityException:請求獲得類型爲 的權限'System.Security.Permissions.EnvironmentPermission,mscorlib, Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934 e089' 失敗。
System.Security.SecurityException:
在System.Security.CodeAccessSecurityEngine.Check(對象的需求, StackCrawlMark & stackMark,布爾isPermSet)
在System.Security.CodeAccessPermission.Demand()
在System.Net.CredentialCache.get_DefaultCredentials()
在 System.Web.Services.Protocols.WebClientPr otocol.set_UseDefaultCredentials(布爾值 值)
at MyStoredProc.localhost.MPWebService。set_UseDefaultCredentials(布爾 值)
在MyStoredProclocalhost.MPWebService..ctor()
在MyStoredProc.StoredProcedures.MyStoredProc(字符串FromPostCode, 字符串ToPostCode)
我相信這是一個權限問題,但我不能,爲我的生活得到它的工作。我曾嘗試在CLR sproc和其他一些內容中使用模擬。有什麼建議麼?我錯過了什麼?
鏈接不工作,所以回答沒有有用的信息 – 2014-03-27 09:00:13