Одной из обязательных задач администрирования баз данных MS SQL Server является периодическое восстановление баз, дабы убедиться, что база восстанавливается успешно. Ещё одной такой задачей является периодическая проверка баз посредством DBCC CHECKDB. Зачастую, полезно эти задачи объединить, и запускать проверку базы после восстановления её на специально предназначенном для этого сервере. Если у базы имеется несколько файловых групп и размер базы настолько большой, что проверка каждой занимает несколько часов, резонно проверять не всю база сразу, а поочерёдно все файловые группы. Сократить время проверки также можно отказавшись от проверки индексов, например вот так: DBCC CHECKFILEGROUP (‘PRIMARY’, NOINDEX). Read the rest of this entry »

Не существует рекомендованного Майкрософт способа уведомления администраторов о том, что SQL Server выгрузил дамп страниц памяти на диск. Также весьма затруднительно отслеживать такие дампы средствами SQL Server или операционной системы, поскольку во время выгрузки дампа работа сервера баз данных и большинства системных процессов «замирает». Однако, вполне возможно обнаружить последствия выгрузки дампа, поскольку в указанной для дампов папке вместе с файлами дампа появится файл с именем: «SQLDUMPER_ERRORLOG.log». Имя этого файла неизменно, на этом и основан предлагаемый вашему вниманию способ слежений за появлением новых дампов. Настройка пути к папке дампов хранится в системном реестре. По этому пути можно посредством PowerShell узнать существует ли в папке дампов файл с именем «SQLDUMPER_ERRORLOG.log». Такую проверку можно делать по расписанию в задании Агента SQL Server. Если файл обнаружен, то можно совершить необходимое действие. Например, в приведенном ниже сценарии будет отправлено письмо электронной почты на указанный список адресов. Отправку осуществит подсистема SQL Server DatabaseMail. Для корректной отправки сообщения нужно указать существующий почтовый профиль.
Обычно, администраторы изучают причины, вызвавшие создание дампа по файлам текстовых описаний дампа и логу. Вместе с этим можно переименовать и/или скопировать файлы дампа в другое место, или удалить. Также, можно составить сценарий PowerShell таким образом, чтобы необходимые действия выполнялись в дополнение к предлагаемому ниже примеру сценария: Read the rest of this entry »

Craig Freedman April 25, 2007
https://blogs.msdn.microsoft.com/craigfr/2007/04/25/read-committed-isolation-level

SQL Server 2000 поддерживал четыре уровня изоляции транзакций: «read uncommitted» (nolock), «read committed», «repeatable read» и «serializable». В SQL Server 2005 были добавлены два новых уровня изоляции: «read committed snapshot» и «snapshot». Указание уровня изоляции определяет, какие блокировки будут использованы SQL Server при доступе к данным. Следовательно, выбор уровня изоляции фактически определяют степень параллелизма и согласованности, которые станут возможны для операций с данными и транзакций. Все указанные уровни изоляции описаны в Books Online. Read the rest of this entry »

По материалам статьи Craig Freedman: Semi-join Transformation
4 декабря 2006г.

В предыдущих статьях я приводил примеры полу-соединений (semi-joins). Вспомним, что полу-соединение возвращает строку из таблицы, если для этой строки есть хотя бы одна совпадающая строка во второй таблице. Вот простой пример:
Read the rest of this entry »

По материалпм статьи: SQL 2016 – It Just Runs Faster: Automatic Soft NUMA
30 марта 2016

Автор: Nitin Verma – Principal SQL Server Developer, Bob Dorr – Principal SQL Server Escalation Engineer

Мощности серверного оборудования растут из года в год, что обусловлено многолетним развитием технологий изготовления процессоров. Анализируя результаты наших исследований того, как работает SQL Server на современном оборудовании, и как наши клиенты достигают оптимального для себя масштабирования вычислительных ресурсов, мы выдвинули на передний план дальнейшего развития сервера баз данных необходимость улучшения возможностей секционирования обслуживания нагрузки. В настоящее время, именно основанный на секционировании дизайн является самым распространённым способом локализации обслуживания нагрузки и улучшения производительности и масштабируемости. Примером того, как SQL Server использует секционирование нагрузки является объект CMemThread.

Read the rest of this entry »

Дата публикации: 13 августа 2013г.

Автор: Боб Дорр – главный эскалационный инженер поддержки SQL Server
По материалам статьи: How It Works: SQL Server 2012 Database Engine Task Scheduling

В течении последних лет в разных источниках были описаны алгоритмы работы планировщика SQL Server. В частности, в статье «The Guru’s Guide to SQL Server Architecture and Internals» есть глава, написанная разработчиком планировщика (Sameer) и Кеном Хендерсеном. Автор этой статьи иранее описывал некоторые технические детали алгоритмов планирования задач SQLServer.

Эта статья посвящена некоторым изменениям, которые появились в SQL Server 2012. Статья не претендует на охват всех нюансов (коих слишком много), вместо этого будет частично проиллюстрирована работа алгоритма в его современной реализации, что позволит вам лучше понимать поведение планировщика SQLServer . Автор допускает по тексту несколько вольную трактовку в описании алгоритмов, преследуя цель избавить статью от лишней официальности. Read the rest of this entry »

По материалам статьи Крейга Фридмана: Introduction to Partitioned Tables

27 ноября 2006г.

В этой статье я собираюсь продемонстрировать особенности планов исполнения запросов при обращении к секционированным таблицам. Обратите внимание, что существует большая разница между секционированными таблицами (которые стали доступны только с SQL Server 2005) и секционированными представлениями (которые были доступных ещё в SQL Server 2000, и по-прежнему доступны в SQL Server 2005 и последующих версиях). Особенности планов запросов к секционированным представлениям я продемонстрирую в другой статье.
Read the rest of this entry »

« Older entries