绕过DROP TABLE上的SAFE CLR管理过程限制

时间:2012-08-20 19:09:12

标签: c# sql stored-procedures clrstoredprocedure

我需要就最佳方法提出建议。

目前我在MSSQL 2012中有一个clr过程,它将分隔数据文件批量插入到它创建的临时表中,然后通过各种文本/数学逻辑将所有行处理成实时数据表。

一旦完成,我想摆脱它创建的表。 DROP TABLE xxx是我收到以下错误的地方。

Msg 6522, Level 16, State 1, Procedure SyncAgents, Line 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "SyncAgents": 
System.Security.HostProtectionException: Attempted to perform an operation that was forbidden by the CLR host.

The protected resources (only available with full trust) were: All
The demanded resources were: ExternalThreading

System.Security.HostProtectionException: 
   at StoredProcedures.SyncAgents()
.

基本上意味着它需要是UNSAFE。这是我想避免的。所以问题是:

完成此表后放弃此表的最佳方法是什么?它应该是预定的任务吗?是否有某种聪明的触发器可以设置来做到这一点?

我正在考虑创建一个查看队列的调度过程(带有tablename / isprocessed表的简单varchar / bit),然后根据该队列执行drop。

我从一开始就认为问题是错误的吗?

非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

如果您使用适当的临时表(即:一个前缀为#)而不是用户表,您将拥有所需的权限。