Использование расширенных хранимых процедур или SP_OA хранимых процедур для загрузки среды CLR в SQL Server не поддерживается.

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 322884

Сводка

SQL Server 2005 и более поздних версиях содержат среду CLR и поддерживают процедуры, функции, триггеры, типы и агрегаты, написанные на языках CLR. В этих версиях нельзя загрузить среду CLR с помощью расширенных хранимых процедур или sp_OA хранимых процедур.

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 322884

Дополнительная информация

Сборка System.Runtime.InteropServices платформа .NET Framework предоставляет надежную среду для вызова сборок из неуправляемого кода. Однако между внутренними реализациями СРЕДЫ CLR и SQL Server существует несколько технических несоответствий.

Threading

Чтобы повысить производительность, среда CLR реализует локальное хранилище потоков.

Кроме того, среда CLR использует только потоковое планирование и не поддерживает планирование в оптоволокном режиме. Однако SQL Server могут использовать оптоволоконный режим планирования. Чтобы настроить это свойство, выполните хранимую sp_configure процедуру с помощью параметра упрощенного пула. Дополнительные сведения об этом разделе см. в статье Параметр конфигурации сервера с упрощенным пулом.

Память

Использование расширенных хранимых процедур и OLE-автоматизации выполняются в адресном пространстве виртуальной памяти памяти SQL Server. Память по умолчанию SQL Server — это лишь часть памяти, которую SQL Server потенциально может использовать, и среда CLR конкурирует с любыми существующими реализациями этих ресурсов памяти.

Взаимодействие COM

В этом разделе конкретно рассматривается использование OLE Automation в SQL Server и применяется как к внутрипроцессным, так и к внепроцессным com-объектам. Метаданные сборки для интерфейсов функций реализуют типизированный механизм для любых вызовов.

В рамках этой структуры вызываемая оболочка COM для сборки должна использовать внешний механизм сопоставления ClassID с членом управляемого класса. Из-за этого явного сопоставления нет возможности с неуправляемой точки зрения создать корневой список доступных интерфейсов.

Расширенная хранимая IUnknown::QueryInterface процедура sp_oaCreate использует интерфейс для определения поддержки объекта для определенного интерфейса. Взаимодействие между средой CLR и неуправляемым кодом зависит от интерфейса IDispatch для реализации интерфейсов. Так как в сборке на основе CLR нет эквивалента методу QueryInterface , невозможно создать экземпляр объекта .