Mar*_*arc 5 sql-server encryption stored-procedures sqlcmd sql-server-2008
是否有可能在通过SQLCMD脚本创建SQL Server 2008数据库之后加密它们的所有现有存储过程?
我想这样做的原因如下:
我想开发没有加密的存储过程,所以我可以轻松点击SQL Server Management Studio中的"修改"来检查它们的内容.
但是,对于部署我想加密它们,所以我想也许我可以写一个脚本,只有在它们被创建后加密它们.对于开发系统,我不会在最终用户系统上运行脚本,而是运行脚本.
您可能需要检查加密数据库的所有存储过程:
如果您决定需要保护 SQL 存储过程,并且认为加密是个好主意,请务必小心!!!加密数据库存储过程不应该在没有备份文件或存储过程的某种源代码控制的情况下完成。我之所以这样说,是因为一旦它们被加密,就无法转身。(是的,有第三方工具可以解密你的代码,但为什么要经历那个麻烦。)
这个技巧是我开发的,因为我的公司需要在不同的服务器上托管应用程序,而我们担心我们的代码会被泄露。因此,为了交付数据库,我们决定对所有存储过程进行加密。编写了一百多个过程,我不想打开每个过程并在每个存储过程中粘贴“WITH ENCRYPTION”。(对于那些不知道如何加密的人,请参阅如何保护我的存储过程代码[^])。所以我决定制作我自己的小 C# 应用程序,它也做同样的事情。
此应用程序是使用 Visual Studio 2005 和 SQL server 2005 制作的控制台应用程序。输入参数为数据库名称、服务器地址、数据库用户名和密码。一旦您能够提供这些详细信息,您就可以加密所有存储过程了。
我已将我的应用程序代码按原样放在这里。要使此代码工作,您需要向应用程序添加“Microsft.SQlserver.SMO”引用,以便可以访问诸如“Database”和“StoredProcedure”之类的类。
Run Code Online (Sandbox Code Playgroud)BEFORE YOU DO THIS, TAKE A BACKUP!!!!!!!
BEFORE YOU DO THIS, TAKE A BACKUP!!!!!!!
Run Code Online (Sandbox Code Playgroud)
小智 4
我也有同样的问题。
我的解决方案是在我的所有存储过程中添加“--WITH ENCRYPTION”。该版本供开发人员使用并存储在源代码管理中。
然后,在发送文件进行安装之前,我在构建中使用工具(如 sed)将文件上的“--WITH ENCRYPTION”替换为“WITH ENCRYPTION”。
对于纯 SQL 解决方案,您可以使用 REPLACE。