Odd SQL


SSMS Tips & Tricks

Периодически в блогах появляются подобные темы, и бывает, встречаются новые для меня вещи. Некоторые вещи я придумал сам, и нигде больше не встречал, решил поделиться. На новизну не претендую, все написанное здесь лишь плод изучения настроек и использования возможностей стандартной студии, но может кому-то будет полезно

Чтобы студия стала по-настоящему удобным инструментом, нужно ее улучшить с помощью плагинов.

0. SSMS Tools Pack. Идет под номером 0, потому что я не представляю себе работу без этого плагина. Ссылка ведет на список всех возможностей, я пользуюсь далеко не всем, но все равно это очень упрощает жизнь:
- Раскраска соединений. Например, при соединении с боевой базой появляется красная полоса. В принципе, это можно сделать и стандартными средствами, но в этом плагине, мне кажется, сделано намного лучше
- История запросов. Думаю, с этим все понятно. Плагин так же позволяет сохранять историю открытых окон, но, по крайней мере в предыдущих версиях, это очень быстро забивало диск мусором
- Быстрый набор кода из сокращений. Набираем S, жмем клавишу Enter/Tab, и у нас появляется команда "select * from". Разумеется, все сокращения настраиваются. В качестве подарка от разработчика есть сокращение WTF :)
- Встраивание собственных скриптов в меню Object Explorer. В дереве находим объект, вызываем контекстное меню и запускаем скрипт для этого объекта. Например, поиск использования в текстах хранимых процедур, или расширенную информацию по индексам. Это может быть темой отдельного поста, хотя у меня не так много скриптов зашито
- Скриптование результатов запроса - получаем результаты, и генерируем скрипт select ... union all select ... и тд.
- Поиск данных в результатах запроса в табличном виде
читать дальше...
добавлено: 10 фев 13 просмотры: 2599, комментарии: 4



Трюк с курсором

Баловство, конечно, но мне кажется, имеет право на существование

В Oracle есть замечательные типы данных %ROWTYPE. В переменную такого типа можно вытаскивать данные из курсора легко и просто. К сожалению, в MSSQL подобного нет, и для каждой колонки необходимо сначала объявить переменную, затем указать ее в инструкции fetch. Если колонок много, то и без того не самая приятная работа с курсором становится еще хуже :) Читать дальше
добавлено: 10 май 12 просмотры: 1539, комментарии: 6



Обфускация SQL-кода

На прошлой неделе коллеги обсуждали обфускацию C#-кода, решил написать нечто подобное для MS SQL Server. Для меня интерес скорее теоретический - мне не от кого защищать код, да и компилирование с with encryption вполне справилось бы с задачей. До этого я встречал отдельные инструменты, которые делали код нечитаемым - меняли регистр ключевых слов, переносы строк и т.д. Однако существует довольно много утилит, позволяющих отформатировать код обратно, поэтому этот метод не работает. Надо менять названия объектов, но как? Читать дальше
добавлено: 06 май 12 просмотры: 2416, комментарии: 0



Реализация самоподдерживающегося кода

Статья написана довольно давно, но с заведением блога вышла задержка, поэтому была опубликована в форуме. А потом руки не доходили перенести. Дошли :)

При разработке обычно используются стандартные шаблоны процедур. Например, все процедуры должны логировать значения параметров в случае ошибки.
declare @trancount int = @@trancount;
declare @options int = @@options;
declare @params xml = (
    select
        @param1 as param1
        , @param2 as param2
        , @trancount as trancount
        , @options as options
    for xml raw, type
);
begin try
    -- Main code
end try
begin catch
    exec log_error @params = @params;
end catch;


Этот подход обеспечивает гибкость, однако при изменении набора параметров, это необходимо поддерживать, что, к сожалению, не всегда происходит.

Был разработан подход, позволяющий делать эти изменения автоматически. В текст процедуры вносятся комментарии, содержащие теги начала и конца шаблона. Далее, в базе данных создается триггер, отслеживающий изменения процедур, затем для измененных процедур запускается обработчик, который заменяет шаблоны на заготовки. Читать дальше...
добавлено: 06 май 12 просмотры: 1459, комментарии: 5