25 августа 2020

Как снять защиту листа Excel не зная пароль?

    Предположим, что вам дали файл в формате MS Excel. Вы хотите его изменить, но автор файла защитил ячейки листа от редактирования и забыл сообщить пароль.
Можно попытаться узнать пароль, а можно снять защиту с помощью любого архиватора, который умеет работать с архивами в формате ZIP.

12 августа 2020

INSERT в таблицу без указания значений полей

    Все знают, что в команде INSERT имена полей таблицы не являются обязательными параметрами. Сразу скажу, что я никогда не использую подобный INSERT только с указанием значений полей, и вам не рекомендую. А вы задумывались, что список значений полей может тоже не являться обязательной частью этой команды?

05 августа 2020

Парсинг SQL запросов

    Весной передо мной поставили задачу оптимизации большой старой базы данных. Собранная с помощью sp_BlitzCache статистика содержала тысячи однотипных запросов, и для одного из графиков нагрузки потребовалось объединить их количественную статистику. Для этого однотипные запросы нужно было "нормализовать" - заменить конкретные значения на символ параметра (например, "LIKE 'xzy%'" заменить на "LIKE '?%'" или "CONVERT(DATETIME,'01/01/2020 00:00',101)" заменить на "CONVERT(DATETIME,?,101)"...), убрать переводы строк, убрать лишние пробелы/табы... То есть моя задача - разобрать запрос на токены, почистить лишнее и собрать его снова.