2009-10-27 145 views
0

我有这个用户自定义函数。用户自定义函数

public partial class UserDefinedFunctions 
{ 
    static int i; 
    [SqlFunction(IsDeterministic = true)] 
    public static SqlSingle f() 
    { 
     return new SqlSingle(1.3F); 
    } 
}; 

但它只适用于i是只读的。为什么?

回答

2

它也'工作'如果是读写。

如果“不工作”你的意思是,大会无法安装在SQL,因为它包含一个静态字段,使用静态类变量是危险的,原因在CLR Hosted Environment解释说:

鉴于这些考虑,我们 不鼓励使用SQL Server中使用的静态变量 和类型为 的静态数据成员。对于SAFEEXTERNAL_ACCESS组件,SQL服务器 检查装配 的元数据在CREATE ASSEMBLY时间,如果它 发现使用静态数据成员 和变量的失败 创造这样的组件。

标记您的组件是不安全的,你明白静态变量和SQL会接受你的组件所带来的风险的迹象。