Listing 3: False ALTER Statement DECLARE @ContentOfFakeObject4Alter NVARCHAR(4000) DECLARE @ContentOfFakeEncryptedObject NVARCHAR(4000) SET @ContentOfFakeObject4Alter = N'ALTER PROC dbo.uspMyEncProc WITH ENCRYPTION AS' SET @ContentOfFakeObject4Alter = @ContentOfFakeObject4Alter + REPLICATE( N'-', @ObjectCodeLength - (DATALENGTH( @ContentOfFakeObject)/2)) SET XACT_ABORT ON BEGIN TRAN EXEC(@ContentOfFakeObject4Alter) IF @@ERROR <> 0 and @@TRANCOUNT > 0 ROLLBACK TRAN -- For SQL Server 2000 we car run: SELECT @ContentOfFakeEncryptedObject = ctext FROM syscomments WHERE id = object_id('dbo.uspMyEncProc') -- Whereas for SQL Server 2005 we have: SELECT @ContentOfFakeEncryptedObject = imageval FROM sys.sysobjvalues WHERE objid = object_id('dbo.uspMyEncProc') AND valclass = 1 and subobjid = 1 IF @@TRANCOUNT > 0 ROLLBACK TRAN