SQL Server对存储过程的encryption有多安全?

背景

我在Windows Server 2003 Enterprise上使用SQL Server 2008 Enterprise。 我为SQL Server开发了一些存储过程,并且安装了SQL Server的机器可能不完全在我的控制之下(可能会被不受信任的第三方使用)。

我想通过使用SQL Server提供的encryption存储过程函数来保护我的存储过程T-SQL源代码(即不能被其他方查看)。 我不确定encryption存储过程是否安全以及本机pipe理员(安装了SQL Server)是否有办法查看存储过程的源代码?

有可能解密和查看encryption的SQL存储过程的来源,快速search“解密SQL存储过程”显示了相当数量的命中,例如:

http://www.mssqltips.com/tip.asp?tip=1046

然而,encryption你的存储过程至less使得查看源代码更加困难 – 我也不确定当前的任何解密存储过程的方法在实际的SQL服务器安装中是否实际上是可行的 – 上次我查看了许多所需的方法独占访问SQL服务器实例,并阻止任何其他用户访问服务器(尽pipe这可能不会成立)。

还值得注意的是,encryption存储过程可能会引发支持头痛 – 因为您不再能够看到encryption存储过程的执行计划,所以尝试诊断任何性能问题时可能会遇到问题。

我不知道有任何其他的方法来保护你的来源。

澄清marc_s答案(现在删除)

对于SQL Server 2005及更高版本,获取“纯文本”的阈值比以前更高。 基本上,系统pipe理员在DAC。 在这一点上,无论如何,你已经运行了。

对于SQL Server 2000以及之前的版本来说,这要容易得多。 坦率地说,这个工作很难。

因此,对于最终用户和开发人员(没有系统pipe理员)是足够安全的,但是如果想要用它来保护客户端站点的IP,则不是。

“我想打包我的数据库应用程序的forms,让客户使用它,但没有他能够访问存储在其中的实际数据,我认为encryption数据库应该有所帮助”。

答案是一样的:你要求的是数字版权pipe理,SQL Server不支持DRM。 无论您是参考数据,模式devise还是存储过程逻辑,都可以使用此答案。 看谁需要encryption? 进行更详细的讨论。