Упаковка интервалов — это классическая задача SQL, которая подразумевает переупаковку групп пересекающихся интервалов в соответствующие им непрерывные интервалы. В математике интервал — это подмножество всех значений данного типа, например целых чисел, между двумя некоторым разными значениями. В базах данных интервалы могут проявляться в виде интервалов даты и времени, представляющие такие вещи, как сеансы, периоды назначения, периоды госпитализации, расписания или числовых интервалов, представляющие такие вещи, как диапазоны мильных столбов на дороге, диапазоны температур и т.д.
Немного про OR в SQL запросах
Несмотря на избитость темы и многочисленные рекомендации избегать OR в выражениях WHERE/ON SQL запросов, жизнь вносит свои коррективы. Иногда сама постановка задачи подразумевает необходимость использовать OR. Я не собираюсь здесь рассматривать простые случаи, а сразу возьму быка за рога и рассмотрю случай, когда OR должно привести к двум разным выборкам по разным индексам одной и той же таблицы.
DataLine запускает кластер для нагруженных баз данных Microsoft SQL в облаке
В рамках услуги "DBaaS:Microsoft SQL как сервис" клиентам DataLine стала доступна версия для работы с высоконагруженными базами данных. В основе сервиса лежит гиперконвергентная платформа: работу баз данных обеспечивает новый кластер серверов без использования традиционных СХД.
Вебинар DataLine «Работа с DBaaS: инструкция по применению» 28 октября
На вебинаре мы поговорим о самых важных аспектах в работе с базами данных и расскажем, что в этой связи могут предложить управляемые базы данных (DBaaS). Будем говорить о разных базах данных — PostgreSQL, MySQL, MS SQL, MongoDB и Redis.
Определяем логин пользователя по его SID средствами MS SQL
Серверов было около 70-ти и хотелось все сделать стандартными средствами (не использовать, например psgetsid.exe).
Как и положено начал с гугла — ничего полезного не нашел. Пришлось обратиться за помощью на многоуважаемый форум. Было предложено множество вариантов, за что огромное спасибо добрым людям, но увы, решение так и не было найдено.
«Если даже ребята с sql.ru не смогли подсказать — подумал я — значит все, это конец».
MS SQL 2011 – новый оператор Offset
- Offset (смещение)
- Fetch First или Fetch Next (взять первые… или взять следующие…)
Offset
Использование данной команды позволяет пропустить указанное количество строк перед тем как выводить результаты запроса. Что под этим подразумевается: Допустим, у нас есть 100 записей в таблице и нужно пропустить первые 10 строк и вывести строки с 11 по 100. Теперь это легко решается следующим запросом:
Select *
From <SomeTable>
Order by <SomeColumn>
Offset 10 Rows
Для тех товарищей, которые практикуют .Net должен быть знаком метод расширения для коллекций Skip, который пропускает указанное количество строк. Так вот выражение Offset работает точно так же. После того как данные упорядочены каким-либо образом, можно применять выражение Offset.
MS SQL 2011 — Обработка ошибок
Это слово может использоваться в сочетании с управляющей конструкцией Try…Catch и позволяет послать уведомление о возникновении ошибки времени исполнения. Когда возникает исключение, программа ищет ближайший по иерархии вверх блок Catch который может обработать исключение. Используя это выражение внутри блока Catch можно изменить вывод ошибки. Более того, теперь вызывать исключение можно произвольно в любом месте скрипта.
Далее рассмотрим различные способы поимки исключении, которые предоставляет SQL Server начиная с версии 2000 и до версии 2011, с указанием плюсов и минусов.
MS SQL 2011 – Модификация возвращаемого набора данных
Перед тем, как мы углубимся в детали использования данной возможности, рассмотрим, как предыдущие версии SQL серверов обходились с данными, которые возвращает хранимая процедура. Какие возможности они предоставляли для работы с результатом.
Для демонстрации работы будем использовать в качестве примера таблицу tbl_Test состоящую из 3 колонок.
Распределенные транзакции между RabbitMQ и MS SQL
Однако, как только у нас появляется отдельная система для хранения очереди сообщений (мы используем RabbitMQ), сразу возникают проблемы с транзакционностью. Например, если мы хотим сохранить в БД отметку о том, что мы отправили сообщение в Rabbit, не так уж и просто гарантировать, чтобы отметка была сохранена только в случае успешной отправки сообщения. О том, как мы справлялись с этой проблемой читайте под катом.
Типичные взаимные блокировки в MS SQL и способы борьбы с ними
Процесс 1 блокирует ресурс А.
Процесс 2 блокирует ресурс Б.
Процесс 1 пытается получить доступ к ресурсу Б.
Процесс 2 пытается получить доступ к ресурсу А.
В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.
Mobile Business Intelligence средствами Microsoft
Представляем простой и недорогой способ организации сервиса мобильной аналитики (Mobile BI) для сотрудников компании.
Для организации сервиса мы использовали технологии Microsoft SQL Server (SSAS, SSIS), службы Microsoft Azure и компоненты DevExpress.
Введение
Аналитики сообщают о все больше возрастающей потребности в мобильной аналитике со стороны компаний в различных отраслях. Особенно силен спрос в ритейле. Почти все основные поставщики BI решений имеют в составе своих продуктов средство для организации Mobile BI. Однако предоставить сотрудникам доступ к аналитическим данным на их мобильных устройствах зачастую не так просто. Готовые решения и услуги по внедрению требуют существенного бюджета, а самостоятельная разработка трудоемка.
DB hacking или экскурс в мир СУБД
Этот обзор посвящен типовым ошибкам развертывания разнообразных СУБД, от самых известных и используемых на тысячах серверов, до специализированных и относительно редко встречающихся. Задачи создать всеобъемлющий курс по всем возможным векторам и уязвимостям не было, поэтому получились небольшие видео-ролики, раскрывающие основные нюансы сетевых атак на СУБД.
Так же, стоит сразу предупредить, что веб-приложения и веб-уязвимости намеренно были оставлены за бортом и не были рассмотрены.
Ревизии и переписка в проектном институте. Интеграция easla.com и TDMS
Я собирался выступить на ежегодной конференции в ПАО «Гипротюменнефтегаз», однако из-за сильной текущей загрузки просто не успел подготовиться. Чем не оправдал ожиданий моих знакомых и коллег (ожидалась небольшая публичная дискуссия). Описываемое далее решение не содержит ничего революционного с организационной точки зрения, но, смею надеяться, некоторого внимания оно все же заслуживает.
Дисциплина, Точность, Внимание к деталям
Введение:
В этой статье речь пойдет о работе с Microsoft Analysis Services и немного о хранилище на Microsoft SQL Server, с которым SSAS работает. Мне пришлось столкнуться с не совсем тривиальными вещами и порой приходилось “прыгать через голову” ради того, чтобы сделать то, что от меня хотят. Работать приходилось в перерывах между совещаниями. Порой новый функционал обсуждался дольше, чем разрабатывался. Часто на совещаниях, по несколько раз, приходилось рассказывать одно и тоже. Когда я сказал, что мне сложно совещаться дольше одного часа, на меня посмотрели с удивлением и непониманием. Во многом, благодаря такой обстановке и появились эти, не совсем тривиальные вещи, о которых я решил написать.
Синхронизация структуры базы данных между приложениями
Каждый, кто когда-либо разрабатывал приложения, использующие базу данных, наверняка сталкивался с проблемой обновления структуры БД при разворачивании и обновлении приложения.
Чаще всего используется простой подход — создание набора SQL-скриптов для модификации структуры БД от версии к версии. Конечно, есть такой мощный инструмент, как Red gate, но он во-первых небесплатный, во-вторых не решает проблему полной автоматизации обновления.
Технология migrations, впервые появившаяся в ОРМ Hibernate и реализованная в Linq, очень хороша и удобна, но подразумевает стратегию разработки структуры БД code first, что весьма трудоемко для уже существующих проектов, а использование в БД триггеров, хранимых процедур и функций делает задачу перехода на code first практически невыполнимой.
В данной статье предлагается альтернативный подход к решению этой задачи, использующий хранение эталонной структуры БД в XML-файле и автоматическую генерацию SQL-скрипта на основе сравнения эталонной и существующей структуры. Итак, начнем...
Создание и хранение резервных копий баз данных в MS SQL. Практические советы
Наткнувшись на статью, опубликованную недавно, посчитал нужным дополнить ее некоторыми практическими рекомендациями. То что затрагивалось в прошлой статье, в этой опускалось.
1. Размер резервной копии
Оценить размер резервной копии можно с помощью хранимой процедуры
sp_spaceused
К примеру вот такой запрос:
USE your_database;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
выполняется намного быстрей резервного копирования, и позволяет более-менее точно оценить будущий размер бэкапа без сжатия.
Нумерология на MS SQL — занимательный эксперимент
StackOverflow: 560 млн показов в месяц, 25 серверов
Что удивительно, для работы StackOverflow хватает всего 25 серверов. Но поскольку нагрузка на ЦП составляет около 10-15%, то всю работу могли бы выполнять и 5 серверов.
Рядовой SNAFU идет в DBA
Для тех, кто не знает, SNAFU — персонаж военных патриотических мультфильмов, созданных американцами во время войны. Этот раздолбай, ввиду природного идиотизма, все время попадает в катастрофические ситуации и, как правило, гибнет в конце серии. Правда, в следующей серии он снова оказывается живым — в этом смысле, его можно считать далеким прародителем Кенни из Южного Парка.
При наборе людей на позицию SQL server developer, я часто был покорен тем, как они отвечали на вопросы. Я готов был сказать им ДА, если бы меня не спасала небольшая задача в одну строчку, которую предложил мой коллега. Удивительно, сколько всего может дать эта задача в одну строку SQL. И вот уже кандидат уже с упоением ходит по граблям. А грабель, как вы увидите, там много. Конечно, ни один человек не собрал ВСЕ возможные грабли. Но, чтобы их все показать, мне и понадобился SNAFU.