Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Добрый день!
Не смог ничего найти по поводу такой вот проблемы. Человеком была создана сборка. Он ушел и к нему не достучаться теперь. Можно ли как-нибудь увидеть тело написанное на С#.
23 дек 09, 18:41    [8109660]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Обратитесь к начальству этого ушедшего человека и спросите:
а в какой системе контроля версий этот человек обязан был исходники сохранять?
23 дек 09, 18:44    [8109667]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Этот человек был фрилансером. Исходники "умные" люди не сохранили. Что делать не знаю.
23 дек 09, 18:55    [8109708]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Ivan TB
Member

Откуда:
Сообщений: 90
http://www.red-gate.com/products/reflector/
.NET Reflector enables you to easily view, navigate, and search through, the class hierarchies of .NET assemblies, even if you don't have the code for them. With it, you can decompile and analyze .NET assemblies in C#, Visual Basic, and IL.
23 дек 09, 19:04    [8109745]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Эх... без системы контроля версий надо было не принимать работу...

Зачем сборка используется?
Мало ли, а вдруг только для каких-то мелких задач,
типа "преобразовать строку с разделителями в таблицу"
В таком случае может заменить ее функционал на чисто SQL-ный ?
23 дек 09, 19:07    [8109753]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Если сборка внедрялась путем нажатия кнопки "Deploy" в Visual Studio или человек использовал аналогичный скрипт, то к сборе вполне может быть привязан и файл с исходным кодом.

Для C#:
select name, convert(varchar(max), content) 
from sys.assembly_files af
where name like '%.cs'
23 дек 09, 19:20    [8109799]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Ivan TB
Рефлектор конечно хорошо, только не могу найти dll с таким именем.

Паганель
Сборка используется для функции с использованием регулярных выражений. Точнее обрезка url и определения секций подсекций сайта.

DeColo®es
Сегодня уже не успел посмотреть. Завтра попробую.

И общий вопрос есть. Подскажите я правильно понимаю. Если вместе с бэкапом восстанавливается и функции, следовательно сборка находится в самой базе а не как отдельная библиотека.
23 дек 09, 20:58    [8110101]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
santyaga
И общий вопрос есть. Подскажите я правильно понимаю. Если вместе с бэкапом восстанавливается и функции, следовательно сборка находится в самой базе а не как отдельная библиотека.
Да, сборки хранятся в самой базе.
23 дек 09, 22:19    [8110300]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
DeColo®es
Таблица пустая.

Я так понимаю это уже никак не восстановишь (исходный код)?
24 дек 09, 13:10    [8112773]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Ну почему же, вытащите content и сохраните в файл.
24 дек 09, 13:36    [8113010]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Не совсем понял. Content представляет собой набор чисел.
24 дек 09, 14:25    [8113416]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
santyaga
Не совсем понял. Content представляет собой набор чисел.
И чем это отличается от файла?
24 дек 09, 14:53    [8113640]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Хорошо. Сохранил в dll. Reflector ее не берет.
24 дек 09, 14:57    [8113676]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
santyaga
Хорошо. Сохранил в dll. Reflector ее не берет.
Вы текст типа "0x08e5f6a8b45c6" в файл сохранили или исходную последовательность байт, которая выводится на экран в SSMS в таком виде?
24 дек 09, 15:36    [8114096]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Все что было в столбце Content.
24 дек 09, 16:20    [8114457]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
santyaga
Member

Откуда:
Сообщений: 30
Create script выдает ту же самую последовательность.
24 дек 09, 16:21    [8114466]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
devart
Member

Откуда: www.devart.com
Сообщений: 1166
santyaga
Не совсем понял. Content представляет собой набор чисел.


Воспользуйтесь таким C# методом для сохранения кода библиотеки в виде файла на диске:

автор
private static void SaveAssembly(string filePath, string connectionString, string assemblyName) {

System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(connectionString);
cnn.Open();

try {
System.Data.SqlClient.SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = string.Format(@"select content from sys.assembly_files where name = '{0}'", assemblyName);
byte[] bytes = (byte[])cmd.ExecuteScalar();
System.IO.File.WriteAllBytes(filePath, bytes);
}
finally {
cnn.Close();
}
}


А вот вариант использования:

автор
private void button1_Click(object sender, EventArgs e) {

SaveAssembly(@"d:\test.dll", @"Data Source=MSSQL_Server_name;Initial Catalog=database_name;Integrated Security=False;User ID=sa", "clr_assembly_name");
}


После этого код сохраненного файла библиотеки можно просмотреть в рефлекторе.
24 дек 09, 17:08    [8114900]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
о госпади... см. аттач

К сообщению приложен файл (RetrieveAssembly.rar - 20Kb) cкачать
24 дек 09, 17:09    [8114913]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
прикольна )) вы надеюсь нашли много общего в колдом который привел
devart


-------------------------------------
Jedem Das Seine
24 дек 09, 17:31    [8115125]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
у devart православней :)
25 дек 09, 18:58    [8120494]     Ответить | Цитировать Сообщить модератору
 Re: CLR  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
devart
santyaga
Не совсем понял. Content представляет собой набор чисел.


Воспользуйтесь таким C# методом для сохранения кода библиотеки в виде файла на диске:

автор
private static void SaveAssembly(string filePath, string connectionString, string assemblyName) {

System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(connectionString);
cnn.Open();

try {
System.Data.SqlClient.SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = string.Format(@"select content from sys.assembly_files where name = '{0}'", assemblyName);
byte[] bytes = (byte[])cmd.ExecuteScalar();
System.IO.File.WriteAllBytes(filePath, bytes);
}
finally {
cnn.Close();
}
}


А вот вариант использования:

автор
private void button1_Click(object sender, EventArgs e) {

SaveAssembly(@"d:\test.dll", @"Data Source=MSSQL_Server_name;Initial Catalog=database_name;Integrated Security=False;User ID=sa", "clr_assembly_name");
}


После этого код сохраненного файла библиотеки можно просмотреть в рефлекторе.


а если у меня нет диска D: как быть ?
26 дек 09, 16:38    [8122016]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить