Степень поддержки C # в пользовательской функции SQL CLR? - PullRequest
1 голос
/ 31 августа 2010

Это может быть наивно, но я не могу получить никакого подтверждения этому: Когда я пишу функцию SQL через SQLCLR и как проект C # SQL Server, может ли функция SQL включать какой-либо метод / класс / пространство имен в .NET BCL? Есть ли какие-то ограничения на то, что может делать функция? У меня есть полный контроль над SQL Server и его операционной системой, поэтому я могу изменить настройки безопасности на этом уровне. Меня больше интересует языковая поддержка C # в пользовательской функции SQLCLR (проект SQL).

Мое окончательное развертывание кода будет на SQL Server 2005 и 2008 R2 (Enterprise Edition). Поскольку 2008 R2 станет развитием 2005 года с точки зрения возможностей и поддержки, 2005 год - мой общий знаменатель, поэтому мне интересны ответы на 2005 год.

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

Версия .NET зависит от версии SQL Server:

  • 2005 = .NET v2.0
  • 2008 / R2 = .NET v3.5

Это не полный доступ к .NET - ограничения основаны на параметре external_access. Смотрите эту ссылку для более подробной информации: http://msdn.microsoft.com/en-us/library/ms345101.aspx

1 голос
/ 01 сентября 2010

не может.Вы не можете использовать классы с атрибутом [HostProtection], который помечает класс как небезопасный.Подробности в этой статье MSDN Library , она включает в себя списки классов, которые запрещены.

Классическим примером такого класса является TimeZoneInfo, он загружает неуправляемую DLL, которая не будетвыгружается, если запрос прерывается.

[HostProtection(SecurityAction.LinkDemand, MayLeakOnAbort=true)]
public sealed class TimeZoneInfo : IEquatable<TimeZoneInfo>, ISerializable, IDeserializationCallback
{
  // etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...