Все статьи | Дневник студента

Найти хранимую процедуру и не потерять себя

Найти хранимую процедуру и не потерять себя главное изображение

Я уже несколько лет работаю с базами данных в разных компаниях. На каждом новом месте существуют свои установленные правила и традиции по работе с СУБД (система управления базами данных). Где-то фиксируют каждое изменение, где-то важен только результат выполненной работы, и все изменения передаются из уст в уста. Могу сказать, что постоянная фиксация изменений очень помогает в работе, так как к базе могут обращаться несколько программистов.

Для себя могу выделить основные моменты, которые выручали меня неоднократно.

  1. Перед правкой (выполнение update каких-то таблиц) обязательно сделать backup базы данных. 1.1 для MS SQL: sql management studio есть встроенная задача для базы - "Создать резервную копию" 1.2 для postgresql: Есть одно замечание: при использовании первого варианта размер бэкапа огромный. 1.2.1 pg_dump -U %имя пользователя% -Fc -d %имя базы% > %path%\%name_dump%.dump - некорректно создает файл так как использует стандартный PIPE - происходит ошибка кодировки 1.2.1pg_dump -U %имя пользователя% -Fc -d %имя базы% -f - решает проблему кодировки

  2. Проверить (по возможности) с каким функционалом связаны таблицы, в которые вносятся изменения. Если это продуктовая база, то выполнение каких-либо действием строго после работы конечных пользователей или программистов, которые разрабатывают функционал, обращаясь к базе.

  3. Если необходимо найти какие-то функции или хранимые процедуры в базе, расположенной на удаленном сервере у заказчика, где установка каких-то дополнительных инструментов в менеджер не представляется возможным, воспользоваться скриптом: 3.1 для MS SQL: declare @SearchText varchar(500) SET @SearchText = 'activity'; --в кавычках указать слово, которое, возможно, может использоваться в функции exec z_FindSQL @SearchText 3.1 для postgresql: select proname,prosrc from pg_proc where prosrc like '%activity%';

  4. Для проверки скрипта можно через каждый кусок кода запускать "select 1, select 2, select 3"

  5. Бывает такое, что при заполнении какого-то поля на сайте слишком большим количеством информации может возникнуть ошибка. Как вариант причиной может стать переполнение полей MLSTRING. В этом случае стоит выполнить запрос: select ActivityId as Id, datalength(%название столбца, который отвечает за это поле на сайте%) as DoneWorkLen, ,%название столбца, возможно отражающего другую полезную информацию%.GetLangOrDefault('ru') ,* from %название таблицы% where ActivityId = 12345 -- ПОМЕНЯТЬ ДЛЯ ПРОЕКТА order by DoneWorkLen desc

.GetLangOrDefault('ru') - переводит содержимое столба на русский язык

Аватар пользователя Teresa
Teresa 18 февраля 2021
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
30 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
30 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
30 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
30 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
30 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
30 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
30 июня 5 месяцев