我正在運行正在調試過程中的MS SQL Server 2008 R2安裝。SQL CLR - 安全/不安全內存使用問題
我已經寫了一個應用程序,它可以在需要的表格上按需要進行加密和解密。此應用程序使用DataTable對象來處理任何給定表中的行。
爲了這集成到SQL,我不得不首先創建以下組件來滿足DataTable對象的用法:
create assembly [system.data.datasetextensions]
from 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll'
with permission_set = unsafe
沒問題;當然我必須聲明這是不安全的,因爲它包含一個不標記爲只讀的靜態字段,因此不是線程安全的,因此從執行到執行都是不可預知的。
但是,我想聲明我的主要CLR DLL是安全的(顯然是通過簽名,放入GAC等),並且可以做到這一點沒有probs。然而,當我運行代碼時,我得到了一個令人討厭的'索引超出範圍'的錯誤,如果我聲明我的主CLR DLL也不安全,它不會引起醜陋的頭部。我認爲這是由於我試圖訪問一個不安全的程序集,這是一個不安全的程序集的事實?
第二件事是,如果這個主要CLR DLL運行不安全,是'過期'CLR調用這不是由SQL Server/.Net清理?當我運行它時,內存消耗會增加,但內存永遠不會被釋放;我真的不想等到應用程序域卸載後才能釋放內存!你們
謝謝..