Я создал блок для интеграции CLR в SQL Server 2008. Это имеет одну ссылку на System.Web.Extensions
, который является проблемой, потому что, когда я пытаюсь добавить свой блок, я получаю следующую ошибку:
Блок 'system.web.extensions, version=3.5.0.0, culture=neutral, publickeytoken=31bf3856ad364e35'. не был найден в каталоге SQL. (Microsoft SQL Server, Ошибка: 6503)
Как я заставляю SQL Server ссылаться на требовавшую сборку?
По-видимому, я не могу, согласно этот пост на форумах 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 \)
например:
CREATE ASSEMBLY SystemWeb из ' C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Web.dll '
с permission_set = unsafe
Поскольку все зависимые сборки находятся в одном каталоге, SQL Server их автоматически зарегистрирует.
Спасибо,
-Vineet.