如何隐藏存储过程?(30分)

T

tsp

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用SQLServer 2000,应用系统所有的算法均放在存储过程中,我如何保护我的存储过程
不被剽窃呢?(数据表可以让别人看,但不能修改结构)
 
禁止操作系统用户登录。所有的sql server登录密码全部加长,用户除了用你的软件
没有任何帐号所以无法进入企业管理器,软件里面登录到数据库的帐号要加密
否则通过ultraedit很容易找出帐号。这样就没事了。

-----
http://www.8421.org
 
情况是这样的,我做过一个系统,所有算法都在存储过程中,应用中只有对存储过程的
调用,现在我离开了原单位,另外一家公司来维护,我只愿意提供接口而不是存储过程
的详细内容,你说我有办法做到吗?(显然,不让他们打开数据库是不可能的,或者说,
必须允许他们打开数据库)
 
对存储过程加密!
 
没办法。 这是由SQL SERVER决定的。 我们恐怕控制不了
 
对存储过程加密?如何加密?加密后的文本能通过SQLServer的检查吗?
 
加密后你还是要解密才能执行,那解密代理是不能加密的。
sql server好像是可以执行一段字符串里面的代码。
所以估计是没有办法的。除非你把存储过程代码放到dll中,然后再在存储过程里面
调用。server sql的存储过程可以调用dll.
 
这种方法复杂了一些。有更合适的办法吗?
 
在SQL SERVER中加密过的存储过程是看不见里面具体的语句的。
看见的只是以EXEC (12346546547441741411)上面显示的一段代码
当然这段代码在解密后是可以看见语句的。
具体加密语句你可以到微软的MSDN上去找
 
我修正一下刚才我话中的错误,加密过的过程是不能在解密除非删除过程。
下面是我在SQL2000中文版帮助中查到的一组原话。
加密过程定义
如果要创建存储过程,并且希望确保其他用户无法查看该过程的定义,
那么可以使用 WITH ENCRYPTION 子句。这样,过程定义将以不可读的形式存储。
存储过程一旦加密其定义即无法解密,任何人(包括存储过程的所有者或系统管理员)
都将无法查看存储过程定义。

 
下面是关于过程的另一段话。

获得有关存储过程的信息
若要显示用来创建过程的文本,请在过程所在的数据库中执行 sp_helptext,
并使用过程名作为参数。
说明 使用 ENCRYPTION 选项创建的存储过程不能使用 sp_helptext 查看。
若要显示有关过程引用的对象的报表,请使用 sp_depends。
若要为过程重命名,请使用 sp_rename
 
顶部