Skip to content

Половина вас не понимает переменные и транзакции

Пересказ статьи Brent Ozar. Half Of You Don’t Understand Variables and Transactions


Уважают ли табличные переменные и обычные переменные транзакции? Если я установлю значение переменной во время выполнения транзакции, а затем выполню откат, что произойдет? Продолжить чтение "Половина вас не понимает переменные и транзакции"
Категории: T-SQL

Реализация безопасности SQL Server с помощью хранимых процедур и представлений

Пересказ статьи K. Brian Kelley. Implementing SQL Server Security with Stored Procedures and Views


Проблема


Я понимаю, что посредством использования цепочки владения SQL Server можно ограничить доступ к таблицам с данными, в то же время позволяя приложениям запрашивать и модифицировать данные. Как это работает? Имеются ли примеры, которые я мог бы использовать в собственном коде?


Продолжить чтение "Реализация безопасности SQL Server с помощью хранимых процедур и представлений"
Категории: T-SQL

Синонимы в SQL Server

Пересказ статьи Greg Larsen. SQL Server Synonyms


В грамматике синоним обозначает существительное, которое имеет тот же смысл, что и другое слово. SQL Server позволяет вам создавать синонимы, поэтому вы можете определять альтернативные имена для уже существующих объектов. Синонимы работают подобно алиасам столбцов или таблиц. Однако синоним создается как объект в базе данных, а не определяется временно при выполнении. В этой статье я объясню, как создавать и использовать синонимы, помогающие разрабатывать и управлять кодом T-SQL.

Продолжить чтение "Синонимы в SQL Server"
Категории: T-SQL

Пример курсора в SQL Server

Пересказ статьи Jeremy Kadlec. SQL Server Cursor Example


Проблема


В своем коде T-SQL я всегда использую теоретико-множественные операции. Мне говорили, что SQL Server ориентирован на обработку операций этого типа, и они будут выполняться быстрей, чем последовательная обработка. Я знаю, что существуют курсоры, но я не знаю, как их использовать. Можете дать мне несколько примеров курсора? Можете указать мне, когда использовать курсоры? Я предполагаю, что Microsoft включил их в SQL Server намеренно, поэтому они должны иметь свою нишу, где могут быть использованы эффективно.

Продолжить чтение "Пример курсора в SQL Server"
Категории: T-SQL

Адаптивные соединения в SQL Server

Пересказ статьи Monica Rathbun. Adaptive Joins in SQL Server


SQL Server 2017 (уровень совместимости 140) внес много интеллекта в обработку запросов, формально известного как адаптивная обработка запросов, функциональности, которая улучшает производительность при рабочих нагрузках прямо из коробки без каких-либо изменений кода. Одной из введенных новинок являются адаптивные соединения (Adaptive Joins). При этой функциональности оптимизатор динамически выбирает оператор соединения во время выполнения; для этого используется пороговое число строк, на основании которого делается выбор между операторами соединения Nested Loop (вложенные циклы) и Hash Match (соединения при поиске совпадений в хеше). Этот переключатель оператора может выбрать лучший вариант и увеличить производительность ваших запросов без прикладывания рук.

Продолжить чтение "Адаптивные соединения в SQL Server"

Увеличение отображения плана запроса в SQL Server на весь экран

Пересказ статьи Greg Robidoux. Maximize View of SQL Server Query Plans with Full Screen Option


Замечательной особенностью SQL Server является возможность отображения графических планов запросов. Проблема с графическими планами состоит в том, что они зачастую очень большие, и весьма затруднительно перемещаться по плану в поисках проблем вашего запроса или запросов. В SQL Server Management Studio у вас есть возможность изменять масштаб, а также открывать определенные части плана, перемещая мышь на сжатые версии плана запроса. Однако при этом вы ограничены панелью результатов для просмотра плана, и это еще больше затрудняет нахождение нужной информации. Существуют ли приемы, которые бы сделали навигацию по плану запроса легче? Продолжить чтение "Увеличение отображения плана запроса в SQL Server на весь экран"
Категории: T-SQL

Использование HierarchyID в SQL Server на простых примерах

Пересказ статьи Edwin Sanchez. How to Use SQL Server HierarchyID Through Easy Examples


Вы еще используете родительско-дочерний подход или хотели бы попробовать что-то новое типа hierarchyID? Да, это относительно новое, поскольку hierarchyID появился в SQL Server 2008. Конечно, новизна, сама по себе, не является аргументом. Однако заметьте, что Microsoft добавил эту функциональность для лучшего представления многоуровневых отношений один-ко-многим. Продолжить чтение "Использование HierarchyID в SQL Server на простых примерах"

Query memory grants. Часть 2: Varchar и сортировка

Пересказ статьи Arthur Daniels. Query memory grants part 2: Varchars and sorting


Какого черта мы сделали все наши столбцы varchar? Это гипотетический вопрос, извините.

И теперь мы должны заплатить за наши решения. Рассмотрим запрос, который должен выполнить некоторую сортировку. Давайте возьмем таблицу, которую нужно отсортировать.
Продолжить чтение "Query memory grants. Часть 2: Varchar и сортировка"

Query memory grants. Часть 1: куда девается память?

Пересказ статьи Arthur Daniels. Query memory grants part 1: Where does the memory go?


Давайте поговорим о том, как запросы используют память, а именно, в плане выполнения. Одним из операторов запроса, который использует память, является сортировка. Чтобы продемонстрировать это, я напишу запрос с предложением ORDER BY и покажу план выполнения.
Продолжить чтение "Query memory grants. Часть 1: куда девается память?"

Неприятный побочный эффект OUTPUT

Пересказ статьи Erik Darling. An Unfortunate Side Effect Of OUTPUT


Время от времени я встречаю людей, которые используют OUTPUT для аудита модификаций чаще всего потому, что "триггеры - это плохо" или "триггеры медленные".

Хорошо, иногда это действительно так. Но использование OUTPUT тоже может быть неудачным решением. Продолжить чтение "Неприятный побочный эффект OUTPUT"

Кучи в SQL Server: часть 2 - оптимизация чтений

Пересказ статьи Uwe Ricken. Heaps in SQL Server: Part 2 Optimizing Reads


Пока эта серия состоит из:

  1. Кучи в SQL Server: часть 1 - основы

  2. Кучи в SQL Server: часть 2 - оптимизация чтений (эта статья)

  3. Кучи в SQL Server: часть 3 - некластеризованные индексы


Кучи вряд ли являются любимцами разработчика, поскольку они не очень производительны, особенно когда дело доходит до выборки данных (так думает большинство людей!). Определенно, какая-то правда есть в этом мнении, однако окончательно все решает рабочая нагрузка. В этой статье я описываю, как работает куча при выборке данных. Если вы понимаете процесс, который происходит в SQL Server при чтении данных из кучи, вы сможете легко решить, является ли куча лучшим решением для вашей рабочей нагрузки.
Продолжить чтение "Кучи в SQL Server: часть 2 - оптимизация чтений"

OPENJSON и CROSS APPLY

Пересказ статьи Marty Catherall. OPENJSON and CROSS APPLY


OPENJSON является основным средством манипуляции документами JSON в T-SQL.

Мы уже видели, что можем использовать схему по умолчанию, которая вернет метаданные о документе JSON, или же можем использовать явную схему, когда мы вводим предложение WITH и PATH - путь к требуемым данным.

Пока в наших примерах мы использовали либо схему по умолчанию, либо явную схему, но не смешивали их вместе.
Продолжить чтение "OPENJSON и CROSS APPLY"
Категории: T-SQL

OPENJSON и алиас

Пересказ статьи Marty Catherall. OPENJSON and an Alias


Использование алиасов в T-SQL является делом обычным.
Мы можем присваивать алиасы как таблицам (предложение FROM) и столбцам (предложение SELECT), так и некоторым другим вещам. Это важно для написания хороших запросов на T-SQL. Продолжить чтение "OPENJSON и алиас"
Категории: T-SQL

OPENJSON: получение данных и PATH - часть 2

Пересказ статьи Marty Catherall. OPENJSON Getting to the data, and the PATH – PART II


Мы видели как вытащить данные из документа JSON в реляционную таблицу, используя явную схему, которая была определена в предложении WITH табличнозначной функции OPENJSON. Продолжить чтение "OPENJSON: получение данных и PATH - часть 2"
Категории: T-SQL

OPENJSON: Получение данных и PATH - часть 1

Пересказ статьи Marty Catherall. OPENJSON Getting to the data, and the PATH – PART I


Недавно мы использовали FOR JSON PATH для преобразования табличных данных (взятых непосредственно из таблицы SQL) в документ JSON.
PATH, о котором мы говорим здесь, используется с OPENJSON для получения данных, которые содержатся в документе JSON.

Мы видели пример OPENJSON и читали данные с явной схемой.
Продолжить чтение "OPENJSON: Получение данных и PATH - часть 1"
Категории: T-SQL