[ flighter_022 @ 31.10.2007. 17:25 ] @
Postoji li nacin da se u SQL Serveru 2005, automatski ubaci WITH ENCRYPTION klauzula u stored procedures? Znaci, imam na primer 200 procedura, i hocu da odjednom u sve ubacim tu klauzulu? |
[ flighter_022 @ 31.10.2007. 17:25 ] @
[ DarkMan @ 01.11.2007. 13:09 ] @
Posto vidim da ti niko ne odgovara ja ti mogu predloziti resenje koje najverovatnije ne bi bilo moguce izvesti cisto uz pomoc SQL servera.
Mozes da odradis ekstrakciju/skriptovanje svih stored procedura na sledeci nacin: Code: declare @text varchar(8000) select @text = ctext from dbo.syscomments where id=object_id(N'[dbo].[<naziv stored procedure>]') print @text Pa zatim napisati kod koji ce promeniti sve CREATE u ALTER i dodati WITH ENCRYPTION na pravo mesto. I na kraju pokrenuti sve te skripte. Naravno proceduru probati prvo na kopiji baze, pa ako sve prodje kako treba odradis na konkretnoj bazi. [ flighter_022 @ 01.11.2007. 13:33 ] @
Hmmm, to sam i mislio, na neki nacin izvuci listu procedura i onda uraditi program koji ce da protrci kroz njih i ubaci sta mi treba.
[ vujkev @ 08.11.2007. 00:24 ] @
Pošto i sam imam nekoliko procedura koje ću kasnije zaštititi morao sam da napravim isto to što tebi treba. Evo čistog T-SQL koda koji, koliko sam mogao da proverim, radi. Nadam se da nije kasno
Code: declare @text nvarchar(max) declare @ObjectIDOld int declare @ObjectID int declare @ProcedureStart int declare @SPText nvarchar(max) declare c cursor for select ID, [ctext] from dbo.syscomments order by id, colid open c fetch next from c into @ObjectID, @text select @ObjectIDOld = @ObjectID while (@@fetch_status = 0) begin select @SPText='' while (@ObjectIDOld = @ObjectID and @@fetch_status = 0) begin select @SPText = @SPText + @text print str(len(@sptext)) fetch next from c into @ObjectID, @text end select @ProcedureStart = Patindex('create PROCEDURE', @SPText) if @ProcedureStart >= 0 begin declare @AsStart int select @AsStart = Patindex(N'%[^0-9A-Z]as[^0-9A-Z]%', @SPText) if @AsStart > 0 begin select @SPText = replace(@SPText, 'create PROCEDURE', 'Alter procedure') select @SPText = left(@SPText, @AsStart - 1) + ' With encryption as ' + right(@spText, len(@SPText) - @AsStart - 1) exec (@SPText) end end select @ObjectIDOld = @ObjectID end close c deallocate c [ flighter_022 @ 18.11.2007. 23:40 ] @
Ma nije kasno... naravno :)
Hvala! Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|