Как стать автором
Обновить
12.37

Microsoft SQL Server *

Система управления реляционными базами данных

Сначала показывать
Порог рейтинга
Уровень сложности

Разреженные столбцы или sparse columns в MS SQL Server. Реальный опыт применения

Время на прочтение 9 мин
Количество просмотров 9.3K
У одного из наших достаточно крупных клиентов, в системе электронного документооборота которого ежедневно одновременно работают более 10000 пользователей, были применены так называемые sparse-колонки или разреженные столбцы.

Статья – попытка свести предпосылки и результаты применения этой функциональности (и некоторых других настроек СУБД) в едином месте.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 9

Пример реализации общего индикатора производительности MS SQL Server

Время на прочтение 43 мин
Количество просмотров 7.6K

Предисловие


Часто возникает потребность в создании такого индикатора производительности, который бы показывал состояние СУБД относительно предыдущего периода или конкретного дня. В статье Реализация индикатора производительности запросов, хранимых процедур и триггеров в MS SQL Server. Автотрассировка был предложен пример по реализации такого индикатора. Здесь же опишем еще один более простой способ, который ко всему прочему позволяет посмотреть исторически не просто за сколько выполнился запрос, но и как выполнился, а также получить планы выполнения на каждый момент времени.

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

В данной статье будет рассмотрен пример реализации такого общего индикатора, где в качестве меры будет браться все время выполнения запросов (Total Elapsed Time).
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Заглянем в будущее: как изменится инфраструктура хранения данных?

Время на прочтение 3 мин
Количество просмотров 3.7K


Опережающий рост значимости информационной части систем по сравнению с собственно вычислительной составляющей – одна из ключевых тенденций развития ИТ. Чтобы понять правильность этого тезиса совсем не обязательно прибегать к ссылкам на авторитетные аналитические исследования, достаточно просто обратиться к собственному опыту. Компании уже давно поняли, что информация является не просто инструментом для поддержки своей оперативной деятельности, но и становится все более важным для нее активом, в существенной мере обеспечивающим не только повышение капитализации компании, но и ее успешного развития в будущем. Цифровая трансформация, которая затрагивает все уровни современного общества от частного пользователя до государства, в основе своей базируется на базовом тезисе «деятельность на основе данных».

Но на пути реализации этого глобального тренда в последние годы обозначились определенные принципиальные трудности. И дело тут совсем не только в ускоренном росте объемов хранимой информации, как раз с этой задачей современные технологии пока вполне успешно справляются.

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

Читать дальше →
Всего голосов 12: ↑5 и ↓7 -2
Комментарии 2

Реализация отказа в MS SQL Server 2017 Standard

Время на прочтение 10 мин
Количество просмотров 30K

Предисловие


Достаточно нередко можно встретить задачу об обеспечении отказоустойчивости СУБД MS SQL Server. Еще интереснее становится, когда нет лицензии Enterprise, а только Standard.

Сразу отметим, что рассматриваться лицензия Express не будет, т к по данному экземпляру есть существенные ограничения. Да, некоторые из них можно обойти. Например, максимальный размер БД в 10 ГБ легко решается путем декомпозиции большой БД на более маленькие (например, по какому-то признаку создавать новую БД, а в главной БД в представлениях объединять выборки из одних таблиц разных БД). Но отказоустойчивость в Express будет достигаться либо силами системного администратора, либо использованием собственно разработанного (или стороннего) ПО.

В данной статье будут вкратце разобраны все существующие стандартные технологии отказоустойчивости для MS SQL Server 2017 и будет рассмотрен пример реализации отказа наиболее подходящего унифицированного из них в лицензии Standard.
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 15

Истории

Как мы делаем карту для тех, кто делает карту

Время на прочтение 8 мин
Количество просмотров 23K


Продуктами 2ГИС пользуются 30 млн горожан. Чтобы огромный набор данных попал к конечному пользователю, мы используем множество внутренних продуктов, о которых очень редко рассказываем.

Однажды на Хабре уже была статья о нашем внутреннем продукте — векторном редакторе геометрий. Чудеса нейминга привели нас к трём точкам — Fiji. До них проект назывался так: «Новая карта» → «Новая новая карта» → «Новая новая новая карта». Три года назад мы приступили к реализации Fiji и рассказали о прототипировании UI, сегодня — погрузимся в технические детали и расскажем о том, как создать быстрый и надежный ГИС-редактор.
Вот так
Всего голосов 44: ↑38 и ↓6 +32
Комментарии 41

Отличие DAX и MDX

Время на прочтение 3 мин
Количество просмотров 13K
Меня часто спрашивают об основных отличиях DAX и MDX или в целом о различии табличной и многомерной модели.

С точки зрения выражения или языка запросов, одно из наиболее важных различий лежит во внутренней основе обоих подходов.

В кубе, для адресации ячейки в пространстве, у нас есть понятие кортежа. Ось в кортеже устанавливает координаты. Если у нас есть единственный кортеж, то результат — содержание соответствующей ячейки в кубе. Поскольку у атрибутов куба есть элемент All, который служит значением по умолчанию (в большинстве случаев), если атрибут не был включен в кортеж, то мы выполняем агрегацию также, как если бы он там был. Например, следующий кортеж возвращает (агрегированный) объем продаж за 2013 год

(Date.Calendar.[Calendar Year].&[2013], Measures.[Internet Sales Amount])
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Перенос заданий и расписаний с одного экземпляра MS SQL Server на другой средствами T-SQL

Время на прочтение 16 мин
Количество просмотров 16K

Предисловие


Довольно часто бывает необходимо перенести задания Агента на другой экземпляр MS SQL Server. Восстановление базы данных msdb невсегда именно то решение, которое подойдет, т к нередки случаи, когда нужно перенести именно только задания Агента, а также при переходе на более новую версию MS SQL Server. Так как же можно перенести задания Агента без восстановления базы данных msdb?

В данной статье будет разобран пример реализации скрипта T-SQL, который копирует задания Агента с одного экземпляра MS SQL Server на другой. Данное решение было опробовано при переносе заданий Агента с MS SQL Server 2012-2016 на MS SQL Server 2017.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 12

SQL Server поддерживает регулярные выражения при проверке ограничений, не всегда нужны триггеры

Время на прочтение 2 мин
Количество просмотров 28K

Кто-то задал такой вопрос:


Мне нужно создать таблицу group со столбцом code. Можно ли добавить ограничение на столбец, которое допускало бы только буквенные символы (D, M, O, P или T) с последующими двумя цифровыми символами?

Ему ответили:


Вы не можете этого сделать обычным способом — MS SQL Server поддерживает проверку ограничений, но лишь в виде мин/макс значения INT, длины строки и т.п. То, что вам нужно, — проверка на основе регулярного выражения, которую SQL Server не поддерживает. Теоретически можно сделать .NET вставку, развернуть на SQL Server и заставить его использовать такую проверку — нетривиальная задача.

Попробуем разобраться


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

[DMOPT][0-9][0-9]

Оно допускает только буквенные символы (D, M, O, P или T) с последующими двумя цифровыми символами. Ладно, хватит разговоров, давайте перейдем к коду
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 3

SQL Server: Производительность при вставке данных в таблицу с кластеризованным индексом и без

Время на прочтение 5 мин
Количество просмотров 8.3K
Привет, Хабр! Представляю вашему вниманию перевод статьи SQL Server Insert Performance for Clustered Indexes vs. Heap Tables

Вопрос


Я прочел множество различной документации по современным методам работы с SQL Server, утверждающей, что каждая таблица должна иметь кластеризованный индекс и не быть кучей с некаластеризованными индексами. Большинство источников отмечает административную выгоду от использования кластеризованных индексов. Но есть ли в этом какое-то влияние на производительность и другие положительные или отрицательные стороны?
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 9

Как IIS поддерживает нашу BI-аналитику, и в чем особенности настройки под Highload

Время на прочтение 7 мин
Количество просмотров 7.1K


В аналитической части бэкенда Яндекс.Денег активно используется Microsoft IIS, и уже накопился некоторый багаж знаний о его применении в высоконагруженной среде, которым хочется поделиться.


Наша аналитика работает на стеке Microsoft (SQL Server и продукты SSIS, SSAS, SSRS) – одном из лучших на рынке BI-решений. Раз в основе нашего BI лежат сервисы одного вендора, то логично и для размещения веб-приложений использовать решение Microsoft – IIS.


В статье расскажу о тех особенностях работы с запущенными на IIS приложениями, которые характерны для высоконагруженной среды.

Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 11

Liquibase: пример автоматизированного наката изменений на реляционную БД на примере Oracle HR Sample Schema

Время на прочтение 2 мин
Количество просмотров 23K

Вместо предисловия


Статья будет интересна тем, кто хоть раз задумывался о вопросе наката изменений (патча) на реляционную БД. Статья не будет интересна тем, кто уже освоил и использует Liquibase. Главной целью данной статьи является указание ссылки на репозиторий с примером использования. В качестве примера я выбрал накат sample-схемы HR на БД Oracle (список всех поддерживаемых БД) — любой желающий может скачать себе репозиторий и поиграться в домашних условиях. Желание продемонстрировать пример вызвано обсуждением этого вопроса на ресурсе sql.ru.

Читать дальше →
Всего голосов 15: ↑8 и ↓7 +1
Комментарии 35

Отправка запроса на все базы данных всех указанных серверов на примере MS SQL Server и C#.NET

Время на прочтение 4 мин
Количество просмотров 8.1K

Предисловие


Нередко необходимо послать запрос всем БД (базам данных) всем указанным серверам. Многие DML-запросы можно сделать встроенными средствами. Например, так. Но как быть с DDL-запросами?

В данной статье будет разобран пример реализации приложения, которое отправляет запрос всем базам данных всех указанных серверов, используя MS SQL Server и C#.NET.
Читать дальше →
Всего голосов 9: ↑6 и ↓3 +3
Комментарии 6

13-я статья о типичных ошибках DBA MS SQL Server

Время на прочтение 4 мин
Количество просмотров 15K

Предисловие


В данной сжатой статье будет приведен обзор ошибок, последствия которых были весьма ощутимыми и с которыми мне приходилось сталкиваться.

Статья написана с целью неповторения данных ошибок. И, как говорится, отрицательный опыт — это тоже опыт и порой даже ценнее положительного.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Комментарии 38

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн

Автоматизация по сбору данных о росте таблиц и файлов всех баз данных MS SQL Server

Время на прочтение 8 мин
Количество просмотров 11K

Предисловие


Часто возникает потребность контролировать рост всех таблиц и файлов всех баз данных.

В данной статье будет рассмотрен пример того, как можно автоматизировать сбор данных о росте таблиц и файлов баз данных.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 4

Использование Zabbix для слежения за базой данных MS SQL Server

Время на прочтение 47 мин
Количество просмотров 65K

Предисловие


Часто возникает потребность в режиме реального времени сообщать администратору о проблемах, связанных с БД (базой данных).

В данной статье будет описано, что необходимо настроить в Zabbix для слежения за базой данных MS SQL Server.

Обращаю внимание на то, что подробно как настраивать приводиться не будет, однако формулы и общие рекомендации, а также подробное описание по добавлению пользовательских элементов данных через хранимые процедуры будут приведены в данной статье.
Также здесь будет рассмотрены только основные счетчики производительности.
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 9

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

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

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

Основной причиной было то, что количество внешних связей до таблицы File может меняться в процессе разработки и постоянно переделывать запрос было бы просто неразумным. Планировалась некая модульность в самой системе, поэтому точно неизвестны все конечные таблицы.
Читать дальше →
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 3

Установка MS SQL ODBC Driver под Linux и сборка плагина для Qt 5.9

Время на прочтение 4 мин
Количество просмотров 20K
image

Несколько дней назад встал вопрос о написании консольного приложения, которое будет работать в Linux CentOS 7 и взаимодействовать с MS SQL Server 2012. Мне очень нравится Qt и я решил, что воспользуюсь им для решения этой задачи. И если под Windows я достаточно быстро настроил необходимое окружение, то под Linux я столкнулся с проблемами, которые очень тяжело было решить с помощью гуглинга. Этому вопросу я посвятил полтора дня. Считаю полезным поделиться своим опытом, возможно кому-то это поможет сэкономить драгоценное время.
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 2

Что делать, если в PK Identity закончились значения?

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

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

Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 50

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

Время на прочтение 10 мин
Количество просмотров 38K

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

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

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

Здесь тоже будет много картинок.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 2

SQL Server Integration Services (SSIS) для начинающих – часть 2

Время на прочтение 7 мин
Количество просмотров 40K

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

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

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

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

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

Дальше так же будет очень много картинок.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 9