我想用现有的Delphi代码编写SQL Server存储过程。
过去我使用扩展存储过程,不知何故由Delphi编译的dll由SQL Server扩展存储过程包装。
现在不推荐使用扩展存储过程,所以我想知道是否有一个解决方案,即使在“技巧域”中,就像一些包含普通dll或类似内容的示例CLR代码一样。
只是举个例子:
我通过加密它们在db中插入了一些文档,我想创建一种基于SQL Server函数/过程的API来插入或读取文档,所以访问sql server的其他人可以调用这些函数。
当然另一种解决方案是使用webservices,但我想首先尝试使用SQL Server。
注意:我不想使用Delphi Prism,我的代码是针对XE2的。
答案 0 :(得分:5)
不安全的SQLCLR程序集可以p-invoke本机dll。更好的方法是将本机DLL服务公开为COM接口,并使用来自SQLCLR的COM interop,甚至可以通过OLE Automation Procedures直接从SQL调用COM API。更好的方法是将Delphi代码重写为CLR代码并直接将其作为SQLCLR过程调用。最好的方法是使用SQL Server native encryption features。
答案 1 :(得分:0)
更不用说SQL Server中的CLR可以保证深度性能得到保证。保持标准的CRUD操作员,你应该没事。另一种方法是使用文件系统作为加密机制。如果您只是试图阻止随意访问文档,这是一个很好的方法。否则,可能需要重新考虑您的访问协议。
SQL Server中的CLR是一个方便的坏主意。如果有的话,请谨慎使用它。