Привет, Хабр!
Мы с моим приятелем fedoref занимаемся разработкой и поддержкой решений на MS SQL.
Одной из наших проблем при работе с MS SQL было то, что без MS SQL Management Studio невозможно что-то сделать или проверить. А значит — всегда нужен под рукой компьютер и VPN в сеть клиента (или что посложнее). Нас это не устраивало — мы не всегда сидим перед монитором, а ситуации ингода требуют оперативности, особенно когда дело касается высоких нагрузок в real-time системах. Поэтому мы решили сделать телеграм-бота SQL. (Поискали готовые варианты на Github, но, увы, не нашли того, что нам подошло бы).
Штука оказалась удобной. Вот что она умеет:
- Для работы нужен только SQL сервер от 2016 и выше (никаких доп. сервисов поднимать не надо).
- Можно явно привязать своего бота к своему чату (как, есть в инструкции в репозитории). Т.е. никто кроме вас с вашим сервером общаться не сможет.
- Бот умеет выполнять SQL запросы и структурировано показывать результат:
- Бот умеет выполнять быстрые команды (их можно сконфигурировать самостоятельно) и выводить результат:
- Бот умеет показывать прогресс бар для долгих процессов (например backup/restore)
- Дополнительно:
a. В комплект с ботом идет простая система мониторинга состояния MS SQL Server
b. Бот берет из системы мониторинга критическую статистику и публикует в чат
Мы выложили исходники и инструкции по установке на github в открытый доступ.
Если кому-то этот инструмент окажется полезным — будем рады. И, конечно, искренне благодарны за обратную связь, контакты есть в репозитории.
П.С.
Хочу выразить благодарность t0rr, одному из мейнтейнеров aiogram — за консультацию и вдохновение на начальном этапе создания.
El_Kraken_Feliz
Делал примерно такое же, больше всего убивает максимальная ширина, так что больше всего времени я потратил на алгоритмы разбиения по сообщениям и нормализацию строк, забавно, что у Вас примерно такой же подход, только я ещё с переносами строк заморочался :)
А так удобный, но опасный инструмент получился, решил на уровне кода запретить запросы с словами drop и выборку без ограничений.
А то можно написать что-то типа select * from table и привет :)
gleberof Автор
Класс. Идеи отличные. Присоединишься к проекту?