我目前正在从事一项任务,其中我需要从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