Все потоки
Поиск
Написать публикацию
Обновить
1.4

Microsoft SQL Server *

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

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

Мониторинг места в хранилищах

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

Всем привет Хабровчане!!

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

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

Читать далее

Оптимизация производительности Microsoft Dynamics AX 2012 & 365 FO. Использование Plan guides для тяжелых запросов

Время на прочтение5 мин
Количество просмотров2.8K
В этом посте хотим рассказать о, на наш взгляд, незаслуженно редко используемом методе оптимизации тяжелых запросов к БД Axapta – Plan Guides. Если кратко – это, по сути, механизм «подсказки» оптимизатору SQL правильного плана запроса. В некоторых случаях его использование может быть оправданным, а иногда даже единственным возможным.
Читать дальше →

Машинное обучение в среде SQL Server

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


Инструментарий ML внутри SQL Server

В этой статье описаны шаги по созданию процедуры, которая использует набор данных mtcars, входящий в состав R, на основе которой создается простая обобщенная линейная модель (ОЛМ), способная прогнозировать вероятность оснащения автомобиля механической коробкой передач. Вторая процедура предназначена для оценки — она вызывает модель, созданную в первой процедуре, для вывода набора прогнозов на основе новых данных.
Читать дальше →

Дорожная карта миграции почты IBM Notes/Domino в Exchange и Office 365

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


Переход с IBM Notes на Microsoft Exchange или Office 365 дает весомое количество преимуществ для организации, но сам проект миграции выглядит пугающе и не совсем понятно с чего нужно начинать миграцию. Сам Exchange не включает собственные инструменты для полной миграции или установления сосуществования Notes и Exchange. Фактически, выполнение некоторых задач миграции и сосуществования невозможно без сторонних продуктов. В этой статье мы опишем семь ключевых шагов, которые необходимо выполнить в соответствии с лучшими практиками и нашим опытом проведения успешных миграций.

Успешная миграция включает следующие шаги:

  1. Предварительная оценки миграции.
  2. Установление сосуществования Notes и Exchange.
  3. Планирование оптимальной точности миграции.
  4. Обеспечение максимальной эффективности миграции.
  5. Запуск пробной миграции.
  6. Планирование времени миграции, для минимизации влияния на организацию.
  7. Запуск миграции и отслеживание ее прогресса.

В этой статье мы разберем как подготовиться к миграции и выполнить ее при помощи двух решений от Quest — Coexistence Manager for Notes и Migrator for Notes to Exchange. Под катом некоторые подробности.
Читать дальше →

Производительность вычисляемых столбцов в SQL Server

Время на прочтение9 мин
Количество просмотров15K
Перевод статьи подготовлен специально для студентов курса «MS SQL Server Developer».





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

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

Вычисляемый столбец — это виртуальный столбец, значение которого вычисляется на основе значений в других столбцах таблицы. По умолчанию вычисленное значение физически не сохраняется, а вместо этого SQL Server вычисляет его при каждом запросе столбца. Это увеличивает нагрузку на процессор, но уменьшает объем данных, которые необходимо сохранять при изменении таблицы.
Читать дальше →

Сравнение схем двух баз данных

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

При разработке приложений иногда возникает потребность в сравнении двух баз данных (например prod и dev).

Существует ряд подходов для решения этого вопроса - от создания dump-файла со структурой db и последующим использованием diff, до использования специализированных платных решений типа dbForge или RedGate.

Одним из таких решений, сочетающих бесплатность и удобство использования, является Compalex.

Читать далее

Введение в графовые базы данных SQL Server 2017

Время на прочтение8 мин
Количество просмотров21K
В преддверии старта курса «MS SQL Server Developer» подготовили для вас еще один полезный перевод.




Графовые базы данных — это важная технология для специалистов по базам данных. Я стараюсь следить за инновациями и новыми технологиями в этой области и, после работы с реляционными и NoSQL базами данных, я вижу, что роль графовых баз данных становится все больше. В работе со сложными иерархическими данными малоэффективны не только традиционные базы данных, но и NoSQL. Часто, с увеличением количества уровней связей и размера базы, наблюдается снижение производительности. А с усложнением взаимосвязей увеличивается и количество JOIN.
Читать дальше →

Как SQL Server использует bitmap-фильтры

Время на прочтение8 мин
Количество просмотров5.6K
Перевод статьи подготовлен в преддверии старта курса «MS SQL Server Developer».





Может ли запрос, выполняющийся параллельно, использовать меньше CPU и выполняться быстрее, чем такой же запрос, выполняющийся последовательно?

Да! Для демонстрации я буду использовать две таблицы с одной колонкой типа integer.


Примечание — TSQL скрипт в виде текста находится в конце статьи.
Читать дальше →

Основы правил проектирования базы данных

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

Введение


Как это часто бывает, архитектору БД нужно разработать базу данных под конкретное решение.
Однажды в пятницу вечером, возвращаясь на электричке домой с работы, я подумал о том, как бы я создал сервис по найму сотрудников в разные компании. Ведь ни один из существующих сервисов не позволяет быстро понять насколько подходит тебе кандидат. Нет возможности создать сложные фильтры, включающие или исключающие совокупность определенных навыков, проектов или позиций. Максимум, что обычно предлагают сервисы — фильтры по компаниям и частично по навыкам.

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

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

Этот материал можно перенести и на другую СУБД такую как MySQL или PostgreSQL.
Читать дальше →

Миграция IBM Lotus Notes/Domino в Microsoft Exchange

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

Может быть пора? Такой вопрос рано или поздно появляются у коллег, которые используют Lotus в качестве почтового клиента или системы документооборота. Запрос на миграцию (по нашему опыту) может возникнуть на совсем разных уровнях организации: от топ-менеджмента до пользователей (особенно, если таких много). Вот несколько причин, почему миграция с Lotus в Exchange — не такая уж и простая задача:

  • RTF формат IBM Notes не совместим с форматом RTF Exchange;
  • IBM Notes использует SMTP-формат адресов только для внешних писем, Exchange для всех;
  • Необходимость сохранения делегирований;
  • Необходимость сохранения метаданных;
  • Часть писем может быть зашифрована.

А если Exchange уже есть, но Lotus ещё используется, возникают проблемы сосуществования:

  • Необходимость использования скриптов или сторонних систем для синхронизации адресных книг между Domino и Exchange;
  • Domino использует plain text для отправки писем в другие почтовые системы;
  • Domino использует формат iCalendar для отправки приглашений в другие почтовые системы;
  • Невозможность Free-Busy запросов и совместного бронирования ресурсов (без использования сторонних решений).

В этой статье мы разберем специализированные программные продукты Quest для миграции и сосуществования: Migrator for Notes to Exchange и Coexistence Manager for Notes соответственно. Под катом пошаговый алгоритм миграции и другие подробности по процессу миграции.
Читать дальше →

ASP.NET Web API + Entity Framework + Microsoft SQL Server + Angular. Часть 1

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


Введение


Небольшой курс по созданию простого веб-приложения с помощью технологий ASP.NET Core, фреймворка Entity Framework, СУБД Microsoft SQL Server и фреймворка Angular. Тестировать Web API будем через приложение Postman.

Курс состоит из нескольких частей:

  1. Создание Web API с помощью ASP.NET Web API и Entity Framework Core.
  2. Реализация пользовательского интерфейса на Angular.
  3. Добавление аутентификации в приложение.
  4. Расширение модели приложения и рассмотрение дополнительных возможностей Entity Framework.
Читать дальше →

DataGrip 2020.2: редактор больших значений, предпросмотр SQL при редактировании, новое отображение ячеек bool и другое

Время на прочтение6 мин
Количество просмотров9.6K
Привет! За последние четыре месяца мы выпускали фичи и между релизами, поэтому в этой статье о том, что нового появилось в DataGrip за это время. Она приурочена к нашему новому релизу: 2020.2. Получилось длинно, но, надеемся, полезно.


Читать дальше →

SQL Server Plan Guide и другие не самые лучшие практики

Время на прочтение11 мин
Количество просмотров14K
Обычно посты об оптимизации запросов рассказывают о том, как делать правильные вещи, чтобы помочь оптимизатору запросов выбрать оптимальный план выполнения: использовать SARGable-выражения в WHERE, доставать только те столбцы, которые нужны, использовать правильнопостроенные индексы, дефрагментированные и с обновлённой статистикой.

Я же сегодня хочу поговорить о другом — о том, что ни в коем случае не относится к best practices, том, с помощью чего очень легко выстрелить себе в ногу и сделать выполнявшийся ранее запрос более медленным, или вообще больше не выполняющимся из-за ошибки. Речь пойдёт о хинтах и plan guides.
Читать дальше →

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

Быстрый поиск без индекса

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

Проблема


У всех нас есть дни на работе, когда кто-то приходит к нам с по-настоящему невыполнимым требованием, для выполнения которого требуется чудо. Мой случай произошел, когда коллега по маркетингу подошел ко мне с на первый взгляд простым вопросом: если бы я мог получить данные из одной таблицы за определенный месяц пару лет назад. Можно сказать, ничего страшного, но я смутно вспомнил, что таблица была очень большой. У таблицы было поле datetime со временем создания, но был ли на этом поле индекс?

Конечно, они также хотели получить данные быстро. Я, как обычно, сказал: «Я посмотрю, что я могу сделать» и пошел поближе взглянуть на обсуждаемую таблицу. Удача никогда не покинет нас, индекс действительно не существовал, и таблица была огромной. Не проблема, мы можем просканировать таблицу, правильно? Неправильно. Если я чему-то научился за годы работы с базами данных, то это тому, что размер имеет значение. Таблица с сотнями миллионов записей, состоящая из нескольких целочисленных столбцов, была бы достаточно грозной. Затем добавьте различные столбцы varchar и datetime. Теперь это настоящий вызов, не так ли?
Читать дальше →

Обратная связь по грантам памяти (memory grant feedback) в SQL Server 2019

Время на прочтение11 мин
Количество просмотров4.2K
Всем привет! В преддверии старта курса «MS SQL Server разработчик», подготовили для вас еще один интересный перевод.




Если оптимизатор неправильно вычисляет необходимый объем памяти для выполнения запроса, то это будет либо пустая трата памяти, которую мог бы использовать другой процесс, либо будет слив данных на диск (disk spill). Для решения этой проблемы Microsoft добавила обратную связь по грантам памяти (Memory Grant Feedback). В этой статье Грег Ларсен (Greg Larsen) объясняет, как это работает.

Обратная связь по грантам памяти (Memory Grant Feedback) в более ранних версиях SQL Server (до SQL Server 2019 или 15.x) была реализована только для запросов, выполняющихся в пакетном режиме (batch mode). Запросы в пакетном режиме выполняют сканирование и вычисление до 900 строк одновременно, в отличие от запросов в строковом режиме (row mode), когда за раз обрабатывается только одна строка. В версии 15.x обратная связь по грантам памяти была расширена для поддержки запросов в строковом режиме.

Что такое обратная связь по грантам памяти? Это процесс корректировки вычисления памяти, необходимой для запроса с учетом того, сколько памяти было использовано при его предыдущих выполнениях. Это означает, что если кэшированный запрос использовал слишком много памяти при последнем выполнении, то SQL Server уменьшит выделение памяти при его следующем выполнении. Или если SQL Server обнаружил запрос, использующий диск из-за того, что в последний раз ему было выделено недостаточно памяти, то он увеличит память для запроса. Целью обратной связи по грантам памяти является корректировка требований к памяти при каждом выполнении запроса до тех пор, пока запрос не будет использовать объем памяти, соответствующий количеству обрабатываемых строк.
Читать дальше →

T-SQL. Формирование XML со списком значений

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


Небольшая заметка по формированию XML


FOR XML PATH


Для формирования структуры XML-документа со списком значений можно воспользоваться режимом PATH для FOR XML в T-SQL.

<root>
    <level1>
        <level2></level2>
        <values>
            <value></value>
            <value></value> 
            <value></value>
            <value></value>
            <value></value>
        </values>
     </level1>
     <level1>
         <level2></level2>
         <values>
             <value></value>
             <value></value>
             <value></value>
             <value></value>
             <value></value>
         </values>
     </level1>
</root>
Читать дальше →

Yet Another Производственный Календарь на MS SQL. ПО->ША->ГО->ВО

Время на прочтение5 мин
Количество просмотров9.2K
Написать свое решение меня подтолкнул пост на Хабре на аналогичную тему, в котором эта задача была решена «в лоб» — простым перечислением дней и флагом рабочий/выходной за весь диапазон жизнедеятельности системы, в которой этот календарь используется. В аналогичной ситуации я решил поступить немного хитрее, что в итоге оказывается и гораздо проще в поддержке. Если интересно, как это было сделано — welcome под кат:
Читать дальше →

Сравниваем производительность Check Constraint и Foreign Key в SQL Server

Время на прочтение5 мин
Количество просмотров3.8K
Перевод статьи подготовлен в преддверии старта курса «MS SQL Server разработчик».




Проблема


При настройке производительности SQL Server часто возникает вопрос, как ограничение внешних ключей (foreign key) влияет на производительность модификации данных. Все понимают, что внешние ключи необходимы для обеспечения ссылочной целостности, но может есть какой-то другой способ с лучшей производительностью?

В этой статье мы рассмотрим достоинства и недостатки использования ограничения CHECK для обеспечения ссылочной целостности вместо обычного внешнего ключа.
Читать дальше →

HackTheBox endgame. Прохождение лаборатории Professional Offensive Operations. Пентест Active Directory

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

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

Как сказано в описании, P.O.O. предназначен для проверки навыков на всех стадиях атак в небольшой среде Active Directory. Цель состоит в том, чтобы скомпрометировать доступный хост, повысить привилегии и, в конечном итоге, скомпрометировать весь домен, собрав при этом 5 флагов.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

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

Возврат значения из powershell invoke-command агенту SQL-Server

Время на прочтение5 мин
Количество просмотров7.2K
При создании собственной методики управления резервными копиями на множестве серверов MS-SQL я потратил кучу времени на изучение механизма передачи значений в powershell при удаленных вызовах, поэтому пишу самому себе памятку, а вдруг кому-то еще пригодится.

Итак, возьмем для начала простейший скрипт и запустим его локально:

$exitcode = $args[0]
Write-Host 'Out to host.'
Write-Output 'Out to output.'
Write-Host ('ExitCode: ' + $exitcode)
Write-Output $exitcode
$host.SetShouldExit($exitcode)

Для запуска скриптов я буду пользоваться следующим CMD-файлом, каждый раз его приводить не стану:

@Echo OFF
PowerShell .\TestOutput1.ps1 1
ECHO ERRORLEVEL=%ERRORLEVEL%

На экране мы увидим следующее:

Out to host.
Out to output.
ExitCode: 1
1
ERRORLEVEL=1
Читать дальше →