Skip to content

Что это за база данных model?

Пересказ статьи Garry Bargsley. What is a model database?


Вы заглядывали когда-нибудь в раздел системных баз данных SSMS? Те, кто только начинает работать с SQL Server, могут многого не знать о важных системных базах данных. Для функционирования каждого SQL Server требуются четыре системные базы данных.
Continue reading "Что это за база данных model?"

Объекты поддержки диаграмм базы данных SQL Server Management Studio не могут быть установлены

Sergey Grigoyan. SQL Server Management Studio Database Diagram Support Objects Cannot be Installed


Проблема


Иногда необходимо нереименовать машину хоста после установки SQL Server. После изменения имени хоста и выполнения связанных с этим изменений мы можем успешно подключаться с новым именем и без проблем работать с SQL Server. Однако возможна скрытая проблема, с которой вы можете столкнуться при создании диаграммы базы данных. Ниже показано сообщение об ошибке, которое вы можете получить и в котором говорится, что невозможно создать диаграмму базы данных, т.к. у базы данных отсутствует допустимый владелец.
Continue reading "Объекты поддержки диаграмм базы данных SQL Server Management Studio не могут быть установлены"

Когда Intellisense не видит ваш новый объект

Пересказ статьи Andy Galbraith. Toolbox - When Intellisense Doesn't See Your New Object


Я работал над новым SQL заданием (SQL job), и частью задания было добавление нескольких новых таблиц в нашу базу данных обслуживания DBA для хранения данных задания. Я создал запросы мониторинга, а затем - новые таблицы для хранения этих данных. Continue reading "Когда Intellisense не видит ваш новый объект"

Любопытный случай сортировки с Top N

Пересказ статьи DANIEL HUTMACHER. The curious case of the Top N Sort


Просматривая сессию саммита PASS 2017 Брента Озара на Youtube, я узнал, что оператор сортировки Top N в SQL Server резко меняет свое поведение в зависимости от того, сколько строк вы хотите получить из TOP.

Рассмотрим следующий пример запроса в базе данных Stack Overflow:
Continue reading "Любопытный случай сортировки с Top N"

Блокировки, блокирование и тупики в SQL Server

Пересказ статьи John McCormack. Locks, blocks and deadlocks in SQL Server


Терминология имеет значение: Locks, blocks и deadlocks


Я потерял счет тому, сколько раз мне говорили о существовании тупика в базе данных, но стоило проверить и посмотреть, так никаких тупиковых ситуаций не обнаруживалось. В этом сценарии обычно они пытались описать блокировку. Администратору баз данных или разработчику важно знать различие между блокировками (Lock), блокированием (block) и тупиками (deadlock).
Continue reading "Блокировки, блокирование и тупики в SQL Server"

3 лучших совета для написания более быстрых представлений SQL

Пересказ статьи Edwin Sanchez. Top 3 Tips You Need to Know to Write Faster SQL Views


Друг или враг? Представления SQL Server были предметом жарких дебатов, когда я только начал использовать SQL Server. Говорилось, что это плохо, поскольку медленно. Но как обстоят дела сейчас?
Continue reading "3 лучших совета для написания более быстрых представлений SQL"

Агрегатные функции

Пересказ статьи Hugo Kornelis. Aggregate Functions


Введение


В настоящее время SQL Server поддерживает три оператора, которые могут вычислять агрегаты: Hash Match, Stream Aggregate и Window Aggregate. Все эти операторы используют один и тот же базовый принцип поддержки внутренних счетчиков по мере обработки строк, так что финальное значение этих внутренних счетчиков и является ожидаемым значением.
Continue reading "Агрегатные функции"

Некоторые преобразования агрегата ANY нарушаются

Пересказ статьи Paul White. Some ANY Aggregate Transformations are Broken


Агрегат ANY - это не то, что мы можем непосредственно написать на Transact SQL. Это только внутренняя функция, используемая оптимизатором запросов и движком.

Я сам очень люблю агрегат ANY, поэтому был несколько огорчен, узнав, что он нарушается довольно фундаментальным образом. Говоря «нарушается», я имею в виду получение неправильных результатов.

Здесь я рассмотрю два конкретных случая, где обычно присутствует агрегат ANY, для демонстрации проблемы неправильных результатов и предложу при необходимости обходные пути.
Continue reading "Некоторые преобразования агрегата ANY нарушаются"

Недокументированные планы запросов: агрегат ANY

Пересказ статьи Paul White. Undocumented Query Plans: The ANY Aggregate


Как обычно, начнем с тестовой таблицы:

CREATE TABLE #Example
(
pk numeric IDENTITY PRIMARY KEY NONCLUSTERED,
col1 sql_variant NULL,
col2 sql_variant NULL,
thing sql_variant NOT NULL,
);

Continue reading "Недокументированные планы запросов: агрегат ANY"

Последнее слово о хранилище для DATETIME2

Пересказ статьи Randolph West. The final word on storage for DATETIME2


В прошлом месяце один из комментаторов моей статьи на эту тему заметил, что официальная документация SQL Server для DATETIME2 не согласуется с моими утверждениями, и что я недостаточно представляю себе требования к хранилищу.
Continue reading "Последнее слово о хранилище для DATETIME2"

Вопросы по SQL Server, задаваемые на интервью опытным разработчикам

Пересказ статьи Sergey Gigoyan. SQL Server interview questions for experienced developers


В этой статье приводятся 10 технических вопросов по SQL Server для старших разработчиков SQL Server и даются ответы на них с примерами. Хотя в интернете существуют сотни статей и публикаций в блогах, имеющих отношение к интервью по серверам SQL, я решил поделиться моим подходом к интервьюированию кандидатов на разработчика баз данных старшего уровня (senior).

Стояла задача задать минимальное число вопросов за ограниченное время (час или менее) и, в то же время, выбрать такие вопросы, которые в максимальной степени покроют основные темы разработки баз данных. Таким образом, вместо того, чтобы задавать несколько вопросов по одной теме, я попытался сформулировать вопросы так, чтобы каждый вопрос представлял целиком одну тему. Continue reading "Вопросы по SQL Server, задаваемые на интервью опытным разработчикам"

Почему табличный хинт XLOCK не работает?

Пересказ статьи DANIEL JANIK. Why is the XLOCK table hint broken?


Поговорим о том, для чего служит XLOCK. XLOCK - это табличный хинт, который может использоваться в запросе, чтобы наложить эксклюзивную блокировку на ресурсы, к которым обращается запрос. Он может быть весьма опасен, поскольку эксклюзивная блокировка на таблицу или раздел может вызвать значительную потерю производительности. Continue reading "Почему табличный хинт XLOCK не работает?"

Краткое руководство по запуску кода Python в SQL Server

Пересказ статьи Emmitt Albright. A Quick Start to Running Python Code in SQL Server


В SQL Server 2016 была реализована идея выполнения скрипта на языке R изнутри SQL Server. В SQL Server 2017 эта возможность получила название Machine Learning Services (службы машинного обучения) и расширена возможностью выполнять код на языке Python. В этой статье дается краткое руководство по выполнению кода Python изнутри SQL Server и новым методам преобразования данных.
Continue reading "Краткое руководство по запуску кода Python в SQL Server"

Какая разница между PERCENT_RANK и CUME_DIST?

Пересказ статьи Kathi Kellenberger. What’s the Difference Between PERCENT_RANK and CUME_DIST?


Помните стандартные тесты, которые вы сдавали в школе? Они сравнивали ваше выполнение с другими, ранжировали, но не давали фактического процента правильных ответов.

Microsoft реализовал несколько новых оконных функций в SQL Server 2012, в том числе две, которые сравнивают элементы в списке, аналогично результатам стандартных тестов. Этими двумя функциями являются PERCENT_RANK и CUME_DIST. Они подобны функции RANK, но возвращают процент в группе, а не просто ранговый номер.
Continue reading "Какая разница между PERCENT_RANK и CUME_DIST?"

Понимание моделей восстановления SQL Server

Пересказ статьи Greg Larsen. Understanding SQL Server Recovery Models


Задачей номер 1, которую каждый администратор баз данных должен выполнять идеально, является восстановление базы данных, если она по какой-то причине окажется поврежденной. Модель восстановления (recovery model) базы данных определяет варианты, которые имеются у администратора при восстановлении базы данных. Если администратор не может восстановить базу данных в случае аварии, ему лучше стряхнуть пыль со своего резюме и начать искать новое направление работы. Continue reading "Понимание моделей восстановления SQL Server"