Pracuję na bazie danych stron trzecich.
Gdy próbuję wyświetlić definicję widoku, klikając prawym przyciskiem myszy, CREATE TO
a następnie NEW QUERY EDIT WINDOW
, pojawia się błąd:
Ta właściwość może nie istnieć dla tego obiektu lub może nie być możliwa do odzyskania z powodu niewystarczających praw dostępu. Tekst jest zaszyfrowany.
-- Encrypted text
Odpowiedzi:
Innym narzędziem innej firmy, którego można użyć do odszyfrowania zakodowanych obiektów w locie, jest monit SQL Red Gate: http://www.red-gate.com/products/sql-development/sql-prompt/features
Po najechaniu myszką na procedurę przechowywaną zobaczysz odszyfrowany skrypt tworzenia.
Zastrzeżenia: to narzędzie jest komercyjne (z 14-dniową bezpłatną wersją próbną) i pracuję dla Red Gate.
źródło
Mam dość szczegółowy opis o tym problemie tutaj .
Krótko mówiąc, obiekt nie jest tak naprawdę zaszyfrowany, ale raczej zaciemniony. Dlatego możemy odzyskać oryginał. Metoda jest trochę zaangażowana, ale składa się z następujących kroków:
Wybierz zaciemniony kod w ten sposób:
Zastąp obiekt innym, który ma tę samą nazwę identyczny identyfikator_obiektu i taką samą długość w bajtach (np. Używając
ALTER PROCEDURE
)To da ci oryginalny kod. Jednak, jak wspomniano Kin, może to być wsparcie, a nawet konsekwencje prawne, dlatego najpierw skonsultuj się z prawnikiem.
źródło
Tekst modułu jest szyfrowany za pomocą szyfru strumieniowego RC4 .
Klucz inicjalizacji RC4 jest obliczany na podstawie skrótu SHA-1 :
Budynek z uniqueidentifier do binarnego (16)
Przekształcony z liczb całkowitych na binarne little-endian (4)
Przekształcony z smallint na binarny little-endian (2) .
Sub-ID obiektu modułu to:
Odpowiednio uprzywilejowany użytkownik może następnie odszyfrować moduł poprzez:
Więcej szczegółów i pełne wdrożenie kodu w moim artykule:
The Internals of
WITH ENCRYPTION
źródło
Możesz połączyć się z SQL Server za pomocą Dedicated Administrator Connection (DAC), a następnie wyświetlić tekst SQL procedury składowanej. Podłącz do DAC za pomocą:
Pełne kroki potrzebne w tej odpowiedzi można znaleźć na stronie Przepełnienie stosu autorstwa Martina Smitha .
Inną alternatywą jest użycie niektórych skryptów stron trzecich, jak wspomniano w Deszyfrowaniu zaszyfrowanych procedur przechowywanych, widoków, funkcji w SQL Server 2005, 2008 i R2
Na marginesie - jeśli jest to baza danych strony trzeciej i jeśli robisz to na prod, to czy sprzedawca ją obsługuje? Może istnieć dobry powód do szyfrowania SP lub widoków. Prawdopodobnie lepiej jest zrobić kopię zapasową, a następnie bawić się nią.
źródło
Jeśli chcesz wyświetlić podgląd oryginalnego skryptu DDL lub odszyfrować zaszyfrowany obiekt, możesz sprawdzić Deszyfrowanie ApexSQL
To bezpłatne, samodzielne narzędzie z opcją integracji z SSMS, podgląd oryginalnego skryptu DDL. Ponadto możesz odszyfrować obiekty znajdujące się na wielu serwerach w jednej turze. Kolejnym narzędziem, które może ci pomóc, jest dbForge SQL Decryptor
źródło
Metoda, której często używam do odszyfrowywania kilku procedur przechowywanych jednocześnie ...
Użyj narzędzia SQL Compare firmy RedGate i porównaj bazę danych z pustą bazą danych (lub dowolną znaną bazą danych, która nie będzie miała procedur przechowywanych). Utwórz skrypt wdrażania i skopiuj do SSMS. Znajdź i zamień NA SZYFROWANIE na białe spacje. Następnie zmień opcję CREATE PROCEDURE na ALTER PROCEDURE. Uruchom skrypt RedGate w stosunku do oryginalnej bazy danych, a całe szyfrowanie procedury przechowywanej zostało usunięte.
Miałem bazę danych z ponad 400 procedurami przechowywanymi i chociaż podpowiedź SQL jest przydatna, nie warto poświęcać czasu na klikanie prawym przyciskiem, kopiowanie i wklejanie ponad 400 procedur przechowywanych. Za pomocą RedGate SQL Compare byłem w stanie usunąć szyfrowanie z moich ponad 400 procedur przechowywanych w mniej więcej 10 minut.
źródło