2012-08-10 121 views
1

我想用現有的Delphi代碼編寫SQL Server存儲過程。編寫一個CLR存儲過程

在過去,我使用擴展存儲過程,不知何故一個由Delphi編譯的DLL由一個SQL Server擴展存儲過程包裝。

擴展存儲過程現在已被棄用,所以我不知道是否有解決方案,即使在「技巧領域」,如一些示例CLR代碼包裝一個正常的DLL或類似的東西。

只給你一個例子:

我在數據庫中插入通過加密一些文件,我想創建一個基於SQL Server的功能/程序插入或閱讀文件的一種API,讓其他訪問sql server的人可以調用這些函數。

當然,另一種解決方案是使用web服務,但我想先嚐試SQL Server方式。

注意:我不想使用Delphi Prism,我的代碼是用於XE2的。

回答

5

不安全的SQLCLR程序集可以p-invoke原生dll。更好的方法是將本地DLL服務作爲COM接口公開,並使用SQLCLR中的COM interop,甚至通過OLE Automation Procedures直接從SQL中調用COM API。更好的方法是將Delphi代碼重寫爲CLR代碼,並直接作爲SQLCLR過程調用它。最好的方法是使用SQL Server native encryption features

0

更不用說SQL Server中的CLR是有保證的深度性能命中。遵守標準的CRUD運營商,你應該沒問題。另一種方式是使用文件系統作爲加密機制。如果您只是試圖阻止對文檔的隨意訪問,這是一個好方法。否則,可能是重新考慮訪問協議的時候了。

SQL Server中的CLR是一個方便的壞主意。如果有的話,謹慎使用它。