~~sql server中从数据库A将数据transfer到数据库B中??
sql   server6.5中在企业管理器里选中数据库A,右键-data   transfer进行; 
 后来发现A中的好多加密存储过程都没有成功transfer到数据库B中, 
 求助,有什么办法? 
------解决方案--------------------先解密再导出。   
 不是好多,应该是所有加密的SP都没有导出。
------解决方案--------------------先将存储过程解密、再创建!   
 SET QUOTED_IDENTIFIER ON  
 GO 
 SET ANSI_NULLS ON  
 GO 
 --以下是一个绝世高手写的代码: 
 create  PROCEDURE sp_decrypt(@objectName varchar(50))  
 AS  
 begin  
 set nocount on  
 --破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器  
 --修正上一版视图触发器不能正确解密错误  
 begin tran  
 declare @objectname1 varchar(100),@orgvarbin varbinary(8000)  
 declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)  
 DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)  
 declare @i int,@status int,@type varchar(10),@parentid int  
 declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int  
 select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)     
 create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)  
 insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)  
 select @number=max(number) from #temp  
 set @k=0     
 while @k <=@number   
 begin  
 if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)  
 begin  
 if @type= 'P '  
 set @sql1=(case when @number> 1 then  'ALTER PROCEDURE  '+ @objectName + '; '+rtrim(@k)+ ' WITH ENCRYPTION AS  '  
 else  'ALTER PROCEDURE  '+ @objectName+ ' WITH ENCRYPTION AS  '  
 end)     
 if @type= 'TR '  
 begin  
 declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)  
 select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)  
 select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj  
 if @tr_parent_xtype= 'V '  
 begin  
 set @sql1= 'ALTER TRIGGER  '+@objectname+ ' ON  '+OBJECT_NAME(@parentid)+ ' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1  '  
 end  
 else  
 begin  
 set @sql1= 'ALTER TRIGGER  '+@objectname+ ' ON  '+OBJECT_NAME(@parentid)+ ' WITH ENCRYPTION FOR INSERT AS PRINT 1  '  
 end     
 end  
 if @type= 'FN ' or @type= 'TF ' or @type= 'IF '  
 set @sql1=(case @type when  'TF ' then   
  'ALTER FUNCTION  '+ @objectName+ '(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end  '  
 when  'FN ' then  
  'ALTER FUNCTION  '+ @objectName+ '(@a char(1)) returns char(1) with encryption as begin return @a end '  
 when  'IF ' then  
  'ALTER FUNCTION  '+ @objectName+ '(@a char(1)) returns table with encryption as return select @a as a '  
 end)     
 if @type= 'V '  
 set @sql1= 'ALTER VIEW  '+@objectname+ ' WITH ENCRYPTION AS SELECT 1 as f '     
 set @q=len(@sql1)  
 set @sql1=@sql1+REPLICATE( '- ',4000-@q)  
 select @sql2=REPLICATE( '- ',8000)  
 set @sql3= 'exec(@sql1 '  
 select @colid=max(colid) from #temp where number=@k   
 set @n=1  
 while @n <=CEILING(1.0*(@colid-1)/2) and len(@sQL3) <=3996  
 begin   
 set @sql3=@sql3+ '+@ '  
 set @n=@n+1  
 end  
 set @sql3=@sql3+ ') '  
 exec sp_executesql @sql3,N '@sql1 nvarchar(4000),@ varchar(8000) ',@sql1