繁体   English   中英

SQL Server:如何从存储过程中提取注释以​​进行部署

[英]SQL Server: How to extract comments from stored procedures for deployment

我们有很多存储过程,其中都包含很多注释。
有没有一种方法可以从存储过程中提取注释以​​进行部署,以便用户在使用SQL Server Management Studio修改存储过程时看不到它们?

注意:我们正在使用SQL Server 2008。

您可以使用WITH ENCRYPTION选项:

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
--Try this just to make sure
END

在此之前,请确保将存储过程的逻辑保存在安全的地方,因为一旦保存了存储过程的代码,您将很难对其进行访问。

之后,用户将无法使用企业管理器sp_helptext来获取源代码,但这可以被破解...

加密很棒,但是如果您需要允许用户更改存储过程(正如您最初的问题所建议的那样),那么加密不是您的答案。 它将向用户隐藏注释和代码。

如果要使代码可见,但要删除注释,则可能要使用Management Studio编写所有存储过程的脚本,然后使用宏/文本编辑器(如UltraEdit)查找和删除所有注释,然后再次运行该脚本以执行以下操作:重建所有无注释的存储过程。

我不相信WITH ENCRYPTION是要走的路,因为它很容易破解。 从未意味着不可能解密。 即使它不是复杂的加密,它也会影响重新编译的执行,尤其是在存储过程需要不断重新编译的情况下(例如,如果它使用大量临时表和游标)。

应该有一种创建存储过程的方法,以删除-和下一个回车之间以及/ * * /容器之间的所有文本,然后将create / alter脚本另存为其他内容,也许保存在您的QA数据库中,例如。 sp_execute_sql将被大量使用。

如果不是存储过程,则可以使用任何其他应用程序从架构中检索存储过程,然后使用正则表达式执行我刚刚描述的操作,并吐出一个新的alter / create T-SQL代码,而无需添加注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM