引用http://www.microsoft.com/china/technet/columns/tipsfortechs/wsqs3.asp 综合实例 下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。 DECLARE @sp_name nvarchar(400)DECLARE @sp_content nvarchar(2000)DECLARE @asbegin intdeclare @now datetimeselect @now = getdate()DECLARE sp_cursor CURSOR FOR SELECT object_name(id)FROM sysobjectsWHERE xtype = 'P' AND type = 'P' AND crdate < @nowAND OBJECTPROPERTY(id, 'IsMSShipped')=0OPEN sp_cursorFETCH NEXT FROM sp_cursor INTO @sp_nameWHILE @@FETCH_STATUS = 0BEGINSELECT @sp_content = text FROM syscomments WHERE id = OBJECT_ID(@sp_name) SELECT @asbegin = PATINDEX ( '%AS' + char(13) + '%', @sp_content) SELECT @sp_content = SUBSTRING(@sp_content, 1, @asbegin - 1) + ' WITH ENCRYPTION AS'+ SUBSTRING (@sp_content, @asbegin+2, LEN(@sp_content))SELECT @sp_name = 'DROP PROCEDURE [' + @sp_name + ']'EXEC sp_executesql @sp_name EXEC sp_executesql @sp_contentFETCH NEXT FROM sp_cursor INTO @sp_nameENDCLOSE sp_cursor DEALLOCATE sp_cursor 该存储过程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存储过程的 SQL 定义语句,将 AS 修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。本存储过程在 SQL Server 2000 上通过。