2010-11-19 13 views
3

Wir haben ein paar interne proprietäre Datenbank CLR gespeicherte Procs (MSSQL 2005), die von einem ehemaligen Mitarbeiter zusammengestellt wurden, der den .NET-Quellcode, der zum Erstellen der Assemblys verwendet wurde, verlegt (und nie eingecheckt) hat. Diese wurden nicht verschleiert.Ist es möglich, eine SQL Server CLR-Prozedur für gespeicherte Prozeduren zu dekompilieren?

Ist es möglich, die Baugruppen in einen Zustand Reverse-Engineering, wo wir die Quelle bearbeiten könnten und neu kompilieren?

+2

Haben Sie es mit Reflector versucht? Es ist normalerweise ziemlich gut beim Dekompilieren. – cdhowie

Antwort

4

Ja, solange Sie die Montage und es wurde in keiner Weise obtusified.

.NET Reflector sollte für Sie arbeiten:

http://www.red-gate.com/products/reflector/

+4

"Obtusified?" Ich wusste nicht, dass Sarah Palin SO war! +1 –

+1

Sie betcha! Eigentlich habe ich nie die richtige Verwendung für dieses Wort gefunden. : P – Andrew

+0

Vielen Dank dafür, aber ich habe ein Problem. Ich habe die DLL mit der hier gefundenen Methode vom Server extrahiert: http://serverfault.com/questions/139703/extracting-a-sqlclr-assembly - wenn ich jedoch in Reflector öffne, heißt es "Objektverweis nicht gesetzt zu einer Instanz eines Objekts. " Es öffnete jede andere .NET-Assembly, die ich gerade kompiliert hatte. Irgendwelche Ideen? – Dane

0

Sobald Sie die Versammlung in eine DLL extrahiert haben, können Sie die Open-Source-ILSpy verwenden, um es zu dekompilieren. Sie werden nicht in der Lage sein, alle Kompilieroptionen zu sehen, die beim Kompilieren verwendet werden, noch können Sie sehen, wie der Quellcode in separate Dateien aufgeteilt wurde. Dennoch werden Sie genug sehen, um in der Lage zu sein, ein Visual Studio-Projekt zu erstellen, die Properties\AssemblyInfo.cs-Datei zu erstellen, die Verweise usw. hinzuzufügen, damit Sie die Quellcodeverwaltung ordnungsgemäß hinzufügen und dann mit der Bearbeitung beginnen können.