2017-07-24 113 views
1

我用命令:SQL Server中創建ASSEMBLY

CREATE ASSEMBLY [xxxx] from 'my dll path ' 
WITH PERMISSION_SET = UNSAFE; 

,但我得到一個錯誤:

System.Web程序,版本= 4.0.0.0沒有發現

爲什麼我需要.net框架的DLL?我不明白。

sql服務器安裝.net框架。

+1

'CREATE ASSEMBLY'創建一個數據庫對象來存放一個** .NET **程序集 - 因此,當然,您確實需要SQL Server內置的.​​NET框架。但是,SQL CLR不會包含'System.Web'程序集,它主要包含基於Web窗體的GUI控件 - 實際上,您在SQL Server代碼中將不需要任何東西。但正如錯誤所指出的那樣 - 你試圖進入SQL Server的程序集顯然*不會引用'System.Web'的依賴關係 - 擺脫它並且你應該沒問題 –

+0

謝謝,我現在很清楚 – Ian

回答

2

SQL Server的內部CLR主機(即SQLCLR)是一個高度受限制的環境。它不像使用操作系統的CLR主機(即控制檯應用程序和Windows /桌面應用程序,這是大多數程序員習慣的),更接近於創建一個Web應用程序,其中有共享資源並且不用於諸如UI之類的事物功能。 SQL Server的CLR中包含一個簡短的庫列表:Supported .NET Framework Libraries。其他.NET Framework庫(如System.Web)需要手動加載,如果它們可以加載的話。通常最好避免這樣的事情,因爲這樣做時你可能容易陷入困境。有關通常使用SQLCLR的更多信息,請參閱我在SQL Server Central上關於此主題撰寫的一系列文章(需要免費註冊以閱讀該站點上的內容):Stairway to SQLCLR

在你的情況,如果你需要連接到一個網頁或Web服務,您最好使用HttpWebRequestHttpWebResponse,因爲它們包含在支持的圖書館,只需要EXTERNAL_ACCESS而不是UNSAFE

+0

謝謝你,現在我很清楚 – Ian