Могут ли основные библиотеки F # быть одобрены SQLCLR? - PullRequest
7 голосов
/ 14 апреля 2011

В соответствии с этой резьбой, F # Core должен быть одобрен SQLCLR для сборок с маркировкой SAFE. Это запланировано? Можно ли это сделать?

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Хитрость, какой бы неприятной она ни была, заключалась бы в использовании флага --standalone для fsc (он же компилятор F #).Это даже можно добавить в настройках проекта и внедрить в выходной артефакт библиотеки времени выполнения F # (вместе со всеми другими зависимостями, которые считаются встраиваемыми).Я полагаю, что в этот момент вы сможете делать именно то, что хотите, просто пометив свою сборку как безопасную SQLCLR.

1 голос
/ 15 апреля 2011

Я верю, что это можно сделать.Однако базовая библиотека F # является исключительной собственностью Microsoft.Это означает, что вы не можете изменить его код и перекомпилировать его для соответствия и соответствия SQLCLR SAFE.Я предлагаю вам добавить предложение в Microsoft, используя веб-сайт Microsoft Connect.

Microsoft connect находится по адресу: http://connect.microsoft.com (вы должны зарегистрироваться и иметь учетную запись электронной почты на live.com или hotmail.com перед регистрацией).

Чтобы вручную добавить вашу DLL-библиотеку .NET и интегрировать ее в SQL Server, вы можете сделать это:

В этом примере сначала необходимо скомпилировать DLL из вашего кода F #.Я сделал этот шаг из ссылки на библиотеку MSDN: http://msdn.microsoft.com/en-us/library/ms254956(v=vs.80).aspx

Просто не забудьте добавить PERMISSION_SET = SAFE в команду CREATE ASSEMBLY.

Вот шаги, которые я цитирую по приведенной выше ссылке:

Загрузка и запуск хранимой процедуры «Hello World» в SQL Server

После успешной компиляции примера процедуры ее можно протестировать в SQL Server.Для этого откройте SQL Server Management Studio и создайте новый запрос, подключившись к подходящей тестовой базе данных (например, к образцу базы данных AdventureWorks).Нам нужно будет создать сборку, чтобы мы могли получить доступ к хранимой процедуре.В этом примере мы предполагаем, что вы создали сборку helloworld.dll в каталоге C: \.Добавьте следующий оператор Transact-SQL к вашему запросу.

CREATE ASSEMBLY helloworld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE

После создания сборки мы теперь можем получить доступ к нашему методу HelloWorld с помощью оператора процедуры create.Мы будем называть нашу хранимую процедуру «привет»:

CREATE PROCEDURE hello
AS
EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld

Как только процедура будет создана, ее можно будет запускать так же, как обычную хранимую процедуру, написанную на Transact-SQL.Выполните следующую команду:

EXEC hello

Это должно привести к следующему выводу в окне сообщений SQL Server Management Studio.

Hello world!

Редактировать :основываясь на комментариях ниже, он прав насчет F # теперь с открытым исходным кодом!Вы можете изменить и перекомпилировать его в соответствии с вашими потребностями.

Редактировать: добавив более подробное руководство по интеграции DLL в SQL Server CLR.

...