在某些情况下,当您分发应用程序和数据库时,可能不希望透露过程、函数、触发器和视图中包含的逻辑。作为附加的安全手段,您可以使用 ALTER PROCEDURE、ALTER FUNCTION、ALTER TRIGGER 和 ALTER VIEW 语句的 SET HIDDEN 子句来隐藏这些对象的内容。
SET HIDDEN 子句可打乱所关联对象的内容,使这些内容变得不可读,而您仍然可以使用这些对象。您还可以卸载对象并将对象重装入其他数据库。
修改是不可逆的,对于使用 8.0 或更高版本创建的数据库,将会删除对象的原始文本。因此需要在数据库外保留对象的原始内容。
用存储过程调试程序进行调试将不会显示过程定义,对过程进行分析也不会显示源。
在已经隐藏的对象上运行上面任何一个语句不会产生任何结果。
要隐藏特定类型的所有对象的文本,您可以使用类似于下面的循环:
begin
for hide_lp as hide_cr cursor for
select proc_name,user_name
from SYS.SYSPROCEDURE p, SYS.SYSUSERPERM u
where p.creator = u.user_id
and p.creator not in (0,1,3)
do
message 'altering ' || proc_name;
execute immediate 'alter procedure "' ||
user_name || '"."' || proc_name
|| '" set hidden'
end for
end有关详细信息,请参见 ALTER FUNCTION 语句、ALTER PROCEDURE 语句、ALTER TRIGGER 语句和 ALTER VIEW 语句。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。