sqlCmd Blog

Фильтр по тегу: sql server


To NULL or NOT to NULL? К вопросу о троичной логике.

Статья фактически является кратким справочником по вопросам поведения и интерпретации NULL-значений различными конструкциями языка T-SQL. Разбираются причины непоследовательности в такой интерпретации, даются максимально короткие примеры кода для самостоятельных тестов/проверок. Так же подробно рассматриваются сами NULL-значения, те проблемы которые вызывает их наличие (или, как минимум, факт допустимости таких значений), а так же приводится теоретическая база, описывающая "идеальное" поведение таких значений в составе логических выражений. Освещаются многочисленные заблуждения и причины недостаточного понимания работы T-SQL кода, связанные с троичной (а не двоичной) логикой этого языка программирования. Уровень материала - 200.

Перейти к статье.
добавлено: 30 сен 12 просмотры: 2162, комментарии: 0



Механика индексных представлений.

Предлагаемый материал подробно разбирает структуру, внутреннее устройство и ручное/автоматическое применение индексов созданных на представлениях. Освещаются распространенные "мифы" и заблуждения, связанные с созданием и, особенно, применением индексов указанного типа. Рассматриваются хинты таблиц и запросов влияющие на их работу, и отдельно разбираются "подводные камни" ожидающие нас в случае применения таких хинтов. Объясняется причины, по которым индекс на представлении зачастую игнорируется оптимизатором запросов при построении плана исполнения. Особый упор статья делает на сходстве и различии в работе индексов на представлении в редакциях Enterprise и не-Enterprise SQL Server одной и той же версии. Уровень материала - 200.

Перейти к статье.
добавлено: 09 июл 12 просмотры: 2160, комментарии: 0



Версия сервера, версия базы данных и уровни совместимости.

Статья рассматривает три сущности с которыми приходится весьма плотно иметь дело любому разработчику/администратору на платформе SQL Server: версию самого сервера, версию баз данных этого сервера и уровень совместимости (compatibility level) баз данных. Подробно описывается влияние каждой из сущностей на сервер/базу данных, исследуются методики извлечения текущих значений указанных сущностей, и выделяются моменты когда эти значения изменяются, описываются числовая структура каждой из сущностей. Центральным вопросом статьи является момент взаимосвязей (подчас - далеко не однозначных) двух указанных версий и уровня совместимости между собой. Исследуются причины по которым базы с младших серверов можно (с ограничениями) переносить на сервера старшие (и какие необратимые для базы данных последствия такой перенос вызывает), а перенос в обратном направлении исключен в принципе. Уровень материала - 200.

Перейти к статье.
добавлено: 26 июн 12 просмотры: 3498, комментарии: 0



Настройка диалога открытия/сохранения файлов Management Studio «под себя».

Очень короткая заметка поясняет как добавить на панель Places Bar диалогов открытия/сохранения файлов студии ваши собственные избранные папки. Такая настройка предоставит вам возможность перемещаться между указанными папками буквально одним щелчком. Это удобно, повышает эффективность труда администратора/разработчика и, отчасти, ведет к упорядочиванию файлов по проектам (папкам) к которым они относятся, вместо складирования их в одну папку «по умолчанию». Уровень материала - 100.

Перейти к статье.
добавлено: 07 июн 12 просмотры: 2360, комментарии: 0



К вопросу уникальности индексов.

Статья исследует низкоуровневую структуру индексных страниц и на основании этих исследований делает вывод о безусловной фактической уникальности каждого индекса создаваемого в рамках SQL Server. Поясняется откуда проистекает такая безусловность, и какими причинами она обусловлена. Исследуется во что, в смысле затратности ресурсов, выливается поддержка сервером "иллюзии" пользователя системы о допустимости существования не-уникальных индексов. Оцениваются различные сочетания индексов кластерных и не-кластерных, создаваемых по различным колонкам одной таблицы и доказывается неоспоримое преимущество уникальных индексов любого типа. Отдельно изучается вопрос о структуре не-кластерного индекса создаваемого на таблице не имеющей индекса кластерного (так называемая "хип-таблица") и делается вывод о нежелательности подобного дизайна. Уровень материала - 300.

Перейти к статье.
добавлено: 04 июн 12 просмотры: 2457, комментарии: 4



Блоки try-catch для программистов на T-SQL.

В статье обсуждается система перехвата ошибок, а именно ее конкретная реализация в языке T-SQL. Изложение ведется для "чистых" T-SQL программистов, не имеющих опыта работы с тем же механизмом в каких-либо высокоуровневых языках. Тщательно обсуждаются концепции обработанной ошибки и ее повторной генерации, а так же обсуждаются технические нюансы такой генерации. Рассматриваются уровни серьезности ошибок и возможности по перехвату ошибок периода компиляции, а не только периода исполнения. Оцениваются варианты работы того же механизма с транзакциями, обсуждается важность и необходимость функции XACT_STATE и опции XACT_ABORT при такой работе. Обсуждаются общие вопросы дизайна T-SQL кода: при каких обстоятельствах применение перехвата ошибок уместно, и когда оно избыточно, нужно ли перехваченное исключение "глотать" или же "проталкивать наверх" и т.д. Приводится готовый шаблон хранимой процедуры составленный с учетом всех таких обсуждений. Уровень материала - 200.

Перейти к статье.
добавлено: 10 май 12 просмотры: 3425, комментарии: 0



Как SQL Server находит оборванные страницы и зачем он этим занимается.

Статья рассматривает систему контроля физической целостности данных реализованной в SQL Server. Исследуется проблематика вопроса и причины приведшие, в свое время, к появлению такой системы. Анализируются возможные режимы указанной системы и проводятся тесты на их "стрессоустойчивость". Выбирается лучший режим и дается обоснование такому выбору. Обсуждается взаимовлияние той же системы и резервных копий данных, как реальное, так и мнимое. Хотя статья и не фокусируется на вопросах ввода-вывода SQL Server как таковых, часть материала можно отнести и к этой теме. Уровень материала - 200.

Перейти к статье.
добавлено: 23 апр 12 просмотры: 2092, комментарии: 1



Бэкапы бывают разными: «поздними», «ранними», «точными».

Статья составлена по вопросам читателей блога заданных ими при изучении статьи предшествующей, и является своеобразным продолжением последней. Рассматриваются вопросы внутреннего устройства резервных копий (бэкапов) SQL Server и те физические процессы последнего, что инициируются по команде на создание очередного бэкапа. Разбирается информация хранящаяся в метаданных каждого бэкапа, предлагаются методы по извлечению такой информации и выделению наиболее существенной ее части. Обсуждаются типичные заблуждения в области резервных копий и причины непонимания существования плотнейшей связи между ними и записями транзакционного лога. С помощью тестовых скриптов эмулируются возможные/типичные ошибки, возникающие при попытке восстановления из бэкапа или набора бэкапов. Обсуждаются теоретические предпосылки таких ошибок и приводятся практические шаги по исправлению ситуации. Приводятся отдельные, короткие и интересные факты о работе SQL Server с бэкапами или вещами напрямую с ними связанными. Уровень материала - 300.

Часть 1/2.
Часть 2/2.
добавлено: 18 апр 12 просмотры: 2274, комментарии: 2



Как перестать называть журнал транзакций SQL Server лог-файлом и прекратить борьбу за его размер.

Фундаментальная статья описывающая внутренние механизмы приводящие в движение всю систему журналирования транзакций SQL Server. Так же рассматриваются некоторые компоненты имеющие значительное влияние на эти механизмы, но непосредственно к ним не относящиеся. Разбираются вопросы основ журналирования, структуры страниц данных, почему страницы становятся "грязными", как, когда, и почему случаются контрольные точки (checkpoint) и их влияние на журнал, внутренняя структура журнала и его записей, как читать и понимать записи журнала, что такое LSN и MinLSN, почему рост и усечение журнала процессы нормальные, а сжатие - нет, почему короткие транзакции лучше длинных и почему бывает наоборот, почему фиксация транзакции требует меньше ресурсов чем ее откат и еще десятки вопросов так или иначе имеющих отношение к журналу.
Для широкого круга читателей заинтересованных в глубоком понимании скрытых механизмов SQL Server.

Часть 1/12.
Часть 2/12.
Часть 3/12.
Часть 4/12.
Часть 5/12.
Часть 6/12.
Часть 7/12.
Часть 8/12.
Часть 9/12.
Часть 10/12.
Часть 11/12.
Часть 12/12.


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

В статье подробно обсуждается настройки безопасности при работе со связанными серверами (linked servers). Рассматриваются все возможные варианты такой настройки, приводятся примеры их практической реализации, а так же детально разбираются отличия каждого варианта и причины почему мы можем в данной ситуации предпочесть тот или иной вариант.
Часть 1/4.
Часть 2/4.
Часть 3/4.
Часть 4/4.
добавлено: 04 апр 12 просмотры: 2254, комментарии: 0