2010-08-31 65 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