30/03/2017

Проверка сырых SQL запросов

TL;DR Плагин для Visual Studio, проверка сырых SQL запросов в управляемом C# коде. Чуть подробнее Не поймите меня не правильно, я люблю ORM’ы, разной степени навороченности. Но случаются моменты когда приходится “деградировать” в использовании ORM, к примеру когда нужно использовать функции базы данных которые не поддерживаются в вашей ORM или просто хотите убрать дополнительные накладные расходы в запросах. Что делать когда база оптимизирована, где-то денормализирована для достижения лучших показателей скорости выполнения запросов, но данных много и кэшей на всех не хватает, а Entity или Nhibernate дает не достаточную производительность? ... Читать дальше

20/02/2017

Удаление In-memory таблиц

Нет ничего мудрёного: удаляем зависимые хранимые процедуры, удаляем In-memory таблицы и не забываем удалить ранее созданные пользовательские типы, находятся они в Programmability->Types->User-Defined Table Types. А посмотреть какие типы для In-memory можно запросом: select * from sys.table_types where is_memory_optimized = 1 Как правило забывают удалить Types, из-за чего становится невозможным перевести Azure SQL с уровня P1 на более низкий уровень базы данных.

14/02/2017

Когда не стоит покупать электронные компоненты

Не стоит тратить деньги и нервы на товары если выполняется одно из условий: Даташит не находится на первой странице в выдаче гугла. На готовый модуль нет документации или принципиальной схемы. Модуль\компонент слишком новый и на него нет отзыва или примера работы реально собранного устройства. Соблюдения простых правил позволит вам спасти часы и даже дни жизни. Список будет расширятся по мере набивания шишек.

18/01/2017

Полная версия SQL запроса из плана выполнения

Бывает, что запросы не помещаются в стандартный вывод SMSS или XML версию плана выполнения запроса. Для этого нужно обратиться к кэшу на прямую и взять необходимые поля, в которых уж точно будет полный запрос а не его часть. SELECT cp.objtype AS ObjectType, OBJECT_NAME(st.objectid,st.dbid) AS ObjectName, cp.usecounts AS ExecutionCount, st.TEXT AS QueryText, qp.query_plan AS QueryPlan FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st

15/01/2017

Блокировка в Azure SQL

Херня случается, что ж поделать, вот так работает система десятилетие и тут бац половину силектов отвалилось. Когда у вас SQL Server от Azure в виде сервиса, то поддержка части DMV’s и DMF’s в GUI не реализована, да и SQL не перегрузишь для временного решения этой проблемы. Необходимо разобраться кто и кого блокирует. Но если кого, можно выяснить простым запросом и понять какие таблица золочены, то узнать кем золочено можно из этого запроса: ... Читать дальше

14/01/2017

Как и на чем работает этот блог

Это полностью статический сайт, опубликованный с помощью Hugo. Статика позволяет снизить нагрузку с сервера и хранить сие на любом самом дешёвом хостинге. На сайте включен https сертификатом от Let’s Encrypt. Инструкция по настройке для Azure Web App. Все это находится в Azure. Служба приложения S1, это на 99% больше чем нужно для данного сайта, но со временем будут работать внешние воркеры в данной службе.

13/01/2017

Начинаем по новой

Приветствую в шестой или уже седьмой реинкарнации блога. Сайт без рекламы, статичный с поддержкой комментариев от Disqus. Здесь будет: Мысли в слух; IoT ловушка; Заметки про редкие виды, чего бы то не было; Много IoT, программирование МК; Книги, ссылки на полезные темы; Программирование, электроника, интернет.

Защитил как смог © Pavel Kochubey 2017