Как ссылаться на сборки GAC при интеграции расширения CLR в SQL Server - PullRequest
7 голосов
/ 21 февраля 2010

Я создал сборку для интеграции с CLR в SQL Server 2008. Он содержит одну ссылку на System.Web.Extensions, что является проблемой, поскольку при попытке добавить сборку появляется следующая ошибка:

Сборка 'system.web.extensions, версия = 3.5.0.0, культура = нейтральная, publickeytoken = 31bf3856ad364e35.' не был найден в каталоге SQL. (Microsoft SQL Server, ошибка: 6503)

Как заставить SQL Server ссылаться на требуемую сборку?

1 Ответ

9 голосов
/ 21 февраля 2010

Очевидно, я не могу, согласно этому сообщению на форумах Microsoft:

Интеграция CLR в SQL Server 2005 поддерживает только подмножество библиотек .NET Framework для ссылок и использования внутри SQL Server. Это:

  • CustomMarshalers
  • Microsoft.VisualBasic
  • Microsoft.VisualC
  • mscorlib
  • System
  • System.Configuration
  • System.Data
  • System.Data.OracleClient
  • System.Data.SqlXml
  • System.Deployment
  • System.Security
  • System.Transactions
  • System.Web.Services
  • System.Xml

Эти библиотеки были протестированы на предмет надежности работы внутри SQL Server. На эти библиотеки можно ссылаться в любом коде, и их не нужно регистрировать с помощью CREATE ASSEMBLY. Это единственные сборки, которые SQL Server позволяет CLR загружать из GAC. Все остальные сборки (в рамках .NET Framework или иным образом) должны быть явно зарегистрированы в базе данных. Любой код, находящийся за пределами этих библиотек, должен быть тщательно проверен пользователем на надежность и безопасность.

Хотя сборки, которые вы пытаетесь зарегистрировать, не поддерживаются интеграцией CLR, их можно использовать, если вы хорошо протестировали свою функциональность. Простой способ зарегистрировать system.web и все его зависимости - зарегистрировать их в каталоге установки .NET Framework (обычно это c: \ windows \ microsoft.net \ framework \)

например:

СОЗДАТЬ СБОРКУ SystemWeb из 'C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Web.dll'

с разрешением_сет = небезопасно

Поскольку все зависимые сборки находятся в одном каталоге, SQL Server автоматически зарегистрирует их.

Спасибо

-Vineet.

...