我需要就最佳方法提出建议。
目前我在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。
我从一开始就认为问题是错误的吗?
非常感谢您的建议。
答案 0 :(得分:0)
如果您使用适当的临时表(即:一个前缀为#
)而不是用户表,您将拥有所需的权限。