2011-04-14 47 views

回答

1

我相信可以做到。但是,F#核心庫是Microsoft的唯一財產。這意味着您不能修改其代碼並重新編譯它以匹配並符合SQLCLR SAFE。我建議你使用微軟的連接網站向微軟添加建議。

Microsoft連接在:http://connect.microsoft.com(您必須在註冊之前在live.com或hotmail.com上註冊並擁有電子郵件帳戶)。

手動添加您的.NET的DLL,並將其集成到SQL Server,你可以這樣做:

在這個例子中,從F#代碼的DLL首先必須編譯。我從MSDN Library鏈接中取得這一步驟: http://msdn.microsoft.com/en-us/library/ms254956(v=vs.80).aspx

只要不要忘記將PERMISSION_SET = SAFE添加到CREATE ASSEMBLY命令。

下面是我從上面的鏈接引用步驟:

加載和運行的「Hello World」在SQL Server

存儲過程一旦樣品過程成功 編譯,你可以在SQL 服務器中測試它。爲此,請打開SQL Server Management Studio並創建一個新的 查詢,並連接到合適的測試 數據庫(例如, AdventureWorks示例數據庫)。我們 將需要創建程序集,所以我們 可以訪問存儲過程。對於 這個例子,我們將假設你 已經在C:\目錄下創建了helloworld.dll 程序集。將以下Transact-SQL語句添加到 到 您的查詢。

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

一旦組件已經創建, 我們現在可以使用CREATE PROCEDURE語句 訪問我們的HelloWorld 方法。我們叫它存儲 過程「你好」:

CREATE PROCEDURE hello 
AS 
EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld 

一旦程序被創建, 它可以像寫在 的Transact-SQL正常 存儲過程運行。執行以下命令 :

EXEC hello 

這將導致在SQL Server管理 工作室消息窗口下面 輸出。

Hello world! 

編輯:基於下面的評論者,他說得對F#現在是開源的!您可以修改並重新編譯它以滿足您的需求。

編輯:添加更多關於如何將DLL集成到SQL Server CLR集成的詳細指南。

+3

與所有編譯器一樣,F#核心庫隨開源許可證Apache 2.0一起發佈。你當然可以修改和重新編譯它,你甚至可以分發它,甚至用於商業目的。 – Laurent 2011-04-15 09:20:21

+0

你是對的!謝謝! – 2011-04-18 01:33:19

+1

完成 - https://connect.microsoft.com/VisualStudio/feedback/details/670494/sqclr-approve-f-core-libraries – Daniel 2011-05-25 15:53:05

1

一個詭計就像使用fsc(也就是F#編譯器)的--standalone標誌一樣。這甚至可以添加到項目設置中,並嵌入輸出工件中的F#運行時庫(以及所有其他可視化嵌入的依賴項)。我相信在那個時候,只要將您的組件標記爲SQLCLR安全,您就應該能夠完全按照您的要求進行操作。

+0

這仍然不允許組件被標記爲'SAFE'。它所做的只是將不安全的代碼移到您的自定義程序集中。 – Daniel 2011-12-12 17:35:03

相關問題