[MS SQL] Проверка хранимки
От: SanyaVB  
Дата: 30.01.18 21:25
Оценка:
Сразу скажу, что пишу на C#, но решил пост сделать в этой теме.

Вообщем при разработке ПО бывают проблемы что кто-то как то меняет хранимку. И вроде бы название совпадает и так на вид похожа, но блин какую то цифру заменили... такие ошибки тяжело искать, занимают массу времени.
Короче решил сделать при старте ПО проверку на целостность БД. Наличие таблиц, полей и индексов не составило проблемы, а вот с хранимками встал в ступор... Как можно узнать их содержимое? Или хотя бы хеш... Чтобы можно было бы их сравнить?
Re: [MS SQL] Проверка хранимки
От: Qulac Россия  
Дата: 30.01.18 21:35
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Сразу скажу, что пишу на C#, но решил пост сделать в этой теме.


SVB>Вообщем при разработке ПО бывают проблемы что кто-то как то меняет хранимку. И вроде бы название совпадает и так на вид похожа, но блин какую то цифру заменили... такие ошибки тяжело искать, занимают массу времени.

SVB>Короче решил сделать при старте ПО проверку на целостность БД. Наличие таблиц, полей и индексов не составило проблемы, а вот с хранимками встал в ступор... Как можно узнать их содержимое? Или хотя бы хеш... Чтобы можно было бы их сравнить?

Тут пишут, что вроде даже текст хранимки можно получить.
Программа – это мысли спрессованные в код
Re: [MS SQL] Проверка хранимки
От: bnk СССР http://unmanagedvisio.com/
Дата: 30.01.18 21:38
Оценка: +2
Здравствуйте, SanyaVB, Вы писали:

SVB>Сразу скажу, что пишу на C#, но решил пост сделать в этой теме.


SVB>Вообщем при разработке ПО бывают проблемы что кто-то как то меняет хранимку. И вроде бы название совпадает и так на вид похожа, но блин какую то цифру заменили... такие ошибки тяжело искать, занимают массу времени.

SVB>Короче решил сделать при старте ПО проверку на целостность БД. Наличие таблиц, полей и индексов не составило проблемы, а вот с хранимками встал в ступор... Как можно узнать их содержимое? Или хотя бы хеш... Чтобы можно было бы их сравнить?

А административным способом не решается?
То есть, обычно (тм) хранимки в базе руками менять строго запрещено.

То есть, для этого обычно есть обновлятор (типа FluentMigrator, EF Migrations, ...),
а все скрипты создания/обновления хранимок (или чего бы то ни было) хранятся в исходниках, которые под сорс-контролем.
И хаос превращается в порядок.

Не совсем понятно, чего ты добьешься таким сравнением.
То есть, если даже поймешь, что структура базы отличается от ожидаемой, что делать-то будешь в этом случае?
Отредактировано 30.01.2018 21:51 bnk . Предыдущая версия . Еще …
Отредактировано 30.01.2018 21:45 bnk . Предыдущая версия .
Re: [MS SQL] Проверка хранимки
От: Adnin  
Дата: 30.01.18 22:05
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Сразу скажу, что пишу на C#, но решил пост сделать в этой теме.


SVB>Вообщем при разработке ПО бывают проблемы что кто-то как то меняет хранимку. И вроде бы название совпадает и так на вид похожа, но блин какую то цифру заменили... такие ошибки тяжело искать, занимают массу времени.

SVB>Короче решил сделать при старте ПО проверку на целостность БД. Наличие таблиц, полей и индексов не составило проблемы, а вот с хранимками встал в ступор... Как можно узнать их содержимое? Или хотя бы хеш... Чтобы можно было бы их сравнить?

Вам нужно юнит тесты писать, а не целосность проверять. А то что делать, если кто то пофиксил хранимку
Вот пример от Ms: https://msdn.microsoft.com/ru-ru/library/jj851212(v=vs.103).aspx
Re: [MS SQL] Проверка хранимки
От: Olaf Россия  
Дата: 31.01.18 04:27
Оценка: +2
Здравствуйте, SanyaVB, Вы писали:

SVB>Вообщем при разработке ПО бывают проблемы что кто-то как то меняет хранимку. И вроде бы название совпадает и так на вид похожа, но блин какую то цифру заменили... такие ошибки тяжело искать, занимают массу времени.

SVB>Короче решил сделать при старте ПО проверку на целостность БД. Наличие таблиц, полей и индексов не составило проблемы, а вот с хранимками встал в ступор...

Даже если вы проверите объекты и при запуске все будет хорошо, никто не гарантирует, что в процессе использования приложения, кто-нибудь не залезет в БД и не выполнит изменения. На мой взгляд, вопрос нужно решать административными мерами – ограничить доступ пользователям к БД. Отрегулировать процесс хранения модели БД, тестирования и выпуска обновлений.

SVB>Как можно узнать их содержимое? Или хотя бы хеш... Чтобы можно было бы их сравнить?


А получить содержимое (текст) ХП можно одним из способов:
select routine_definition from information_schema.routines where routine_type = 'PROCEDURE'

exec sp_helptext 'ХП процедура'

select object_definition(object_id) from sys.procedures

select definition from sys.sql_modules where objectproperty(object_id, 'IsProcedure') = 1 

select text from syscomments where objectproperty(id, 'IsProcedure') = 1
Re: [MS SQL] Проверка хранимки
От: BlackEric http://black-eric.lj.ru
Дата: 31.01.18 09:35
Оценка: +1 :)
Здравствуйте, SanyaVB, Вы писали:

SVB>Сразу скажу, что пишу на C#, но решил пост сделать в этой теме.


SVB>Вообщем при разработке ПО бывают проблемы что кто-то как то меняет хранимку. И вроде бы название совпадает и так на вид похожа, но блин какую то цифру заменили... такие ошибки тяжело искать, занимают массу времени.

SVB>Короче решил сделать при старте ПО проверку на целостность БД. Наличие таблиц, полей и индексов не составило проблемы, а вот с хранимками встал в ступор... Как можно узнать их содержимое? Или хотя бы хеш... Чтобы можно было бы их сравнить?

А потом после правки хп вам еще нужно будет в коде прописать измененный хеш хранимки, что только добавит еще одну точку возникновения проблем. Мне кажется, что в вашем случае нужно менять процесс разработки в первую очередь.
https://github.com/BlackEric001
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.