我有这个用户定义的功能。
public partial class UserDefinedFunctions
{
static int i;
[SqlFunction(IsDeterministic = true)]
public static SqlSingle f()
{
return new SqlSingle(1.3F);
}
};
但只有在i
只读时它才有效。为什么呢?
答案 0 :(得分:2)
如果是可读写的,它也“有效”。
如果'not works'意味着程序集无法安装在SQL中,因为它包含静态字段,因为CLR Hosted Environment中解释的原因使用静态类变量是危险的:
考虑到这些因素,我们 不鼓励使用静态变量 和类的静态数据成员 用于SQL Server。对于
SAFE
和。{EXTERNAL_ACCESS
程序集,SQL Server 检查程序集的元数据 在CREATE ASSEMBLY
时间并且失败了 如果是这样的话,就创造出 找到静态数据成员的使用 和变量。
将您的程序集标记为UNSAFE,以表明您了解与静态变量相关的风险,SQL将接受您的程序集。