• Подсчет количества ссылок на запись в таблице через Foreign Keys

      Потребовалось для собственных целей решить следующую задачку — для одной таблички (File) для каждой записи автоматом рассчитывать количество внешних записей, связанных через foreign key. Задача решалась для конкретной структуры таблички File, но при желании решение можно переделать на более универсальное.

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

      Основной причиной было то, что количество внешних связей до таблицы File может меняться в процессе разработки и постоянно переделывать запрос было бы просто неразумным. Планировалась некая модульность в самой системе, поэтому точно неизвестны все конечные таблицы.
      Читать дальше →
    • Установка MS SQL ODBC Driver под Linux и сборка плагина для Qt 5.9

      • Tutorial
      image

      Несколько дней назад встал вопрос о написании консольного приложения, которое будет работать в Linux CentOS 7 и взаимодействовать с MS SQL Server 2012. Мне очень нравится Qt и я решил, что воспользуюсь им для решения этой задачи. И если под Windows я достаточно быстро настроил необходимое окружение, то под Linux я столкнулся с проблемами, которые очень тяжело было решить с помощью гуглинга. Этому вопросу я посвятил полтора дня. Считаю полезным поделиться своим опытом, возможно кому-то это поможет сэкономить драгоценное время.
      Читать дальше →
    • Что делать, если в PK Identity закончились значения?

      • Tutorial
      Иногда, при дизайне БД разработчики недооценивают масштабы проекта. А потом, проект выстреливает и становится высоконагруженным. Затем, в какой-то момент, кто-то замечает, что в качестве первичного ключа большой таблицы выбран identity типа INT, с ограничением 2,147,483,647.

      Изначально кажется, что 2 миллиарда записей – это много. Но если, у вас ежедневно добавляется 10 млн. новых записей? И уже израсходовано более 1 млрд. значений? У вас приложение, работающее в режиме 24/7? То у вас осталось всего 114 дней, чтобы это исправить тип первичного ключа. Это не так уж и много, если у вас используется значение ключа как в веб-приложении, так и в клиентском.

      Читать дальше →
    • SQL Server Integration Services (SSIS) для начинающих – часть 3

      • Tutorial

      Часть 1
      Часть 2

      В этой части я расскажу о работе с параметрами и переменными внутри SSIS-пакета. Узнаем, как можно задавать и отслеживать значения переменных во время выполнения пакета.

      Также рассмотрим вызов одного пакета из другого при помощи «Execute Package Task» и некоторые дополнительные компоненты и решения.

      Здесь тоже будет много картинок.
      Читать дальше →
    • SQL Server Integration Services (SSIS) для начинающих – часть 2

      • Tutorial

      Часть 1
      Часть 3

      В этой части изменим логику загрузки справочника Products:

      1. При помощи компонента «Union All» объединим два входящих потока в один;
      2. Для новых записей будем делать вставку, а для записей, которые уже были добавлены ранее будем делать обновление. Для разделения записей на добавляемые и обновляемые воспользуемся компонентом Lookup;
      3. Для обновления записей применим компонент «OLE DB Command».

      В завершении этой части рассмотрим компонент Multicast для того чтобы распараллелить выходящий набор.

      Итого в этой части мы познакомимся с четырьмя новыми компонентами: Union All, Lookup, OLE DB Command и Multicast.

      Дальше так же будет очень много картинок.
      Читать дальше →
    • Подходы к версионированию изменений БД

      Намного лучше дисциплинарные ограничения убирать инструментарным расширением
      Автор статьи


      Введение


      При разработке информационной системы, то есть программы, нацеленной на хранение, работу с данными, обработку, анализ и визуализацию какой-то базы данных, одним из краеугольных камней стоит задача разработки БД. Когда я только начинал задаваться этим вопросом, казалось – что ни сделай, все равно будет криво.


      На протяжении 5 лет разработки нескольких корпоративных ИС, я ставил и пытался решать вопросы, как тот или иной аспект разработки БД сделать удобным. Искал инструменты, помогающие что-то делать с БД, методологии. На удивление в этой области мало наработок. И в каждом подходе сразу видно – вот это нельзя, вот тут будет неудобно, тут слишком много дисциплинарных правил (см эпиграф)… В этой статье я попытался собрать те походы, которые считаю наиболее эффективными, и один, в добавление к собранным, представлю как венец моих исканий, который считаю наиболее «бронебойным».

      Читать дальше →
    • SQL Server Integration Services (SSIS) для начинающих – часть 1

      • Tutorial

      Часть 2
      Часть 3

      SSIS – это инструмент, который позволяет в удобном виде реализовать интеграцию, т.е. реализовать процесс переноса данных из одного источника в другой. Этот процесс иногда называют ETL (от англ. Extract, Transform, Load – дословно «извлечение, преобразование, загрузка»).

      Думаю, данный практический курс будет полезен тем, кто хочет изучить SSIS и не знает с чего начать. Здесь в режиме Step By Step мы начнем с самого начала, т.е. установки всего необходимого.

      Дальше будет очень много картинок!
      Читать дальше →
      • +9
      • 9,7k
      • 6
    • Почему вы не должны сжимать ваши файлы данных

      • Перевод
      • Tutorial
      Одна из самых моих горячих проблем касается сжатия файлов данных. Несмотря на то, что я владел кодом сжатия, когда работал в Майкрософт, у меня не было шанса переписать его так, чтобы сделать его более приятным. Мне действительно не нравится сжатие.

      Прошу, не путайте сжатие журнала транзакций со сжатием файлов данных. Сжатие журнала необходимо, если ваш журнал вырос сверх допустимых пределов, или при избавлении от избыточной фрагментации виртуальных файлов журнала (смотрите здесь (английский) и здесь (английский) замечательные статьи Кимберли). Тем не менее, сжатие журнала транзакций должно быть редкой операцией и никогда не должно входить ни в одну регулярную программу обслуживания, которую вы выполняете.

      Сжатие файлов данных должно выполняться еще реже, если должно вообще. И вот почему — сжатие файлов данных вызывает серьезнейшую фрагментацию индексов. Позвольте мне продемонстрировать это на простом скрипте, который вы можете выполнить сами. Скрипт ниже создаст файл данных, создаст таблицу-«наполнитель» размером 10Мб в начале файла данных, создаст «производственный» кластерный индекс размером 10Мб, и потом проанализирует фрагментацию нового кластерного индекса.
      Читать дальше →
    • 20 бесплатных утилит и 89 скриптов для мониторинга и управления базами данных

      Ты сидишь — база растёт, идёшь — база растёт, спишь, ешь или делаешь ещё много всего, а база всё растёт и растёт. Кто-то очень умный сказал, что единственное, что в нашей жизни постоянно — это изменения. Главное — правильно на них реагировать. Любая нештатная ситуация с базой данных происходит именно из-за таких изменений. К сожалению, не всегда есть возможность вложиться в расшитую золотом и усыпанную драгоценными камнями в 60 карат промышленную систему мониторинга. И это заставляет прибегнуть к бесплатным или условно-бесплатным решениям. В статье я собрал 20 бесплатных утилит от компании IDERA (и не только), которые могут некисло помочь закрыть некоторые вопросы с мониторингом и управлением MS SQL, MySQL и Oracle. Поехали!

      halyava_sir.jpg
      Впитать знания
    • Как мы улучшали TFS

        Ранее, когда у нас не было своего корпоративного блога, я писал о том, как мы используем Microsoft TFS (Visual Studio Team Servives on Premises) для управления жизненным циклом разработки ПО и для автоматизации тестирования. В частности мы собрали большой набор автотестов по разным системам в один пакет, который запускаем каждый день. Подробнее об этом я рассказывал на конференции DevOpsDaysMoscow ( презентация, видео выступления )

        Читать дальше →
      Самое читаемое