sql >> Databáze >  >> RDS >> Sqlserver

Jak dešifrovat uloženou proceduru v SQL Server 2008

Článek SQL Server Pro "Dešifrování objektů SQL Server" stále funguje v SQL Server 2008.

Musíte se připojit přes DAC. Viz soubor "Dešifrování uložených procedur SQL 2005, funkcí, spouštěčů, views.sql" v stažení .

Jen pro shrnutí kroků, které provádí pro následující definici uložené procedury

CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
  1. Načte zašifrovaný text objektu z imageval v sys.sysobjvalues a uloží jej do proměnné @ContentOfEncryptedObject
  2. Vypočítá @ObjectDataLength z DATALENGTH(@ContentOfEncryptedObject)/2 .
  3. Generuje ALTER PROCEDURE příkaz doplněný na správnou délku pomocí - znak (takže v tomto případě ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------ )
  4. Spustí ALTER příkaz, načte zašifrovanou verzi z sys.sysobjvalues a uloží to do proměnné @ContentOfFakeEncryptedObject pak vrátí změnu.
  5. Vygeneruje CREATE PROCEDURE příkaz doplněný na správnou délku pomocí - znak (takže v tomto případě CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS----------- ). To se uloží do proměnné @ContentOfFakeObject

Poté prochází pro @i = 1 to @ObjectDataLength a dešifruje definici znak po znaku pomocí následujícího XOR výpočet.

NCHAR(
      UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
      (
          UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
          UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
      )
     )


  1. Jak získat přístup ke struktuře a získat seznam sloupců, datové typy rekurzoru?

  2. Jak provedu GROUP BY na aliasovém sloupci na serveru MS-SQL?

  3. Pivot na více sloupců pomocí Tablefunc

  4. MySQL vybere formátované datum z milisekundového pole