如何保护SQL Server中的SQL代码

时间:2009-09-11 20:35:55

标签: sql-server piracy-prevention

是否有可能从任何人的眼睛保护SQL 2008存储过程代码?也许有些加密,或像dll一样组装?

1 个答案:

答案 0 :(得分:4)

是的,您可以以加密形式将数据保存在数据库中,但如果您这样做,请确保将原始源代码安全地存储在某处...

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END

不幸的是,至少有两种方法可以打败这种机制。一种是在执行存储过程时运行SQL事件探查器;这通常可以揭示过程本身的文本,具体取决于存储过程的作用(例如,如果它具有GO批处理,动态SQL等)。如果他们错过了初始安装,用户可以删除存储过程或删除数据库,启动Profiler跟踪,并要求您重新创建它们(在这种情况下,它们将捕获CREATE PROCEDURE语句)。您可以通过在代码中嵌入sp_password来阻止Profiler向snoopers显示文本,作为注释:

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
    -- comment: sp_password 
END

查看MSDN Create Procedure文档