2010-08-31 71 views
1

这可能是天真的,但我不能得到任何确认:当我通过SQLCLR和C#SQL Server项目编写SQL函数时,SQL函数是否可以在.NET BCL中包含任何方法/类/名称空间?功能可以做什么限制?我完全控制了SQL Server及其托管操作系统,因此我可以修改该级别的安全设置。我更感兴趣的是SQLCLR用户定义函数(SQL项目)中对C#的语言支持。SQL CLR用户定义函数中的C#支持度?

我最终的代码部署将在SQL Server 2005和2008 R2(企业版)上进行。截至2008 R2将在功能和支持方面2005年开发,2005年是我的共同点,所以我很感兴趣,答案在2005年

感谢

回答

1

它不能。您不能使用具有将该类标记为不安全的[HostProtection]属性的类。详情请见MSDN Library article,它包括禁止使用的类别列表。

这样一个类的经典示例是TimeZoneInfo,它加载了一个非托管DLL,如果存在查询中止,它将不会被卸载。

[HostProtection(SecurityAction.LinkDemand, MayLeakOnAbort=true)] 
public sealed class TimeZoneInfo : IEquatable<TimeZoneInfo>, ISerializable, IDeserializationCallback 
{ 
    // etc... 
} 
+0

http://msdn.microsoft .com/en-us/library/ms254498(v = VS.80).aspx也是一个很好的概览链接。 – Serapth 2010-08-31 20:11:52

2

.NET版本依赖于SQL Server版本:

  • 2005 = 2.0 .NET
  • 2008/R2 = .NET v3.5版本

它到.NET不是完全访问 - 限制根据各地EXTE rnal_access参数。看到这个链接的更多细节:http://msdn.microsoft.com/en-us/library/ms345101.aspx

+0

无关,但有趣的:http://meta.stackexchange.com/questions/63007/omg-ponies-on-google – 2010-08-31 21:37:05

+1

@KM:NOL(嘶鸣大声) – 2010-08-31 21:48:18