Skip to content

Почему вам следует прекратить смотреть на стоимость запроса

Пересказ статьи Erik Darling. Why You Should Stop Looking At Query Cost


Не жалейте расходов


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

Нахождение дочерних записей по внешнему ключу в SQL Server

Пересказ статьи John Morehouse. Finding Foreign Key Child Records In SQL Server


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

Как разблокировать логин SQL Server с помощью T-SQL (без смены пароля)?

Пересказ статьи Kenneth Fisher. How do I unlock a SQL Server Login using T-SQL (without changing the password)?


Недавно логин приложения (авторизация SQL Server) в одной из наших учебных сред начал постоянно блокироваться. Я не буду вдаваться в причины, скажу лишь, что мы решили эту проблему. Это была серьезная проблема, которая довольно быстро перешла в нашу цепочку управления. Нам требовалось решить её как можно быстрее. Поэтому требовалось решение не только на длительную перспективу, но также краткосрочное решение. Последнее решение включает создание скрипта, который разблокирует логин (если он заблокирован), и включение его в задание, которое выполняется каждые 5 минут.

Continue reading "Как разблокировать логин SQL Server с помощью T-SQL (без смены пароля)?"

Безопасность SQL Server - модель безопасности с использованием определяемых пользователем ролей

Пересказ статьи Greg Larsen. SQL Server security – Providing a security model using user-defined roles


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

9 признаков того, что ваш T-SQL может не пройти проверку кода

Пересказ статьи Brent Ozar. 9 Signs Your T-SQL Might Fail a Code Review


Трудно установить абсолютные правила типа: "Фичу X нельзя использовать ни в коем случае."

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

9 признаков того, что ваш T-SQL может не пройти проверку кода

Пересказ статьи Brent Ozar. 9 Signs Your T-SQL Might Fail a Code Review


Трудно установить абсолютные правила типа: "Фичу X нельзя использовать ни в коем случае."

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

Как автоматизировать серверные процессы в экземпляре SQL Server с помощью Python

Пересказ статьи Ian Fogelman. How to Automate Backend Processes in SQL Server Instance with Python


Автоматизация серверных (backend) процессов в экземпляре SQL Server является традиционной задачей. Будь то обновление статистики, перестройка индексов, чтение или удаление данных или другие среды программирования, интегрирующиеся с RDMS, все это исключительно важно. В этой статье рассматриваются те виды задач, которые могут быть выполнены с помощью различных методов, доступных в модулях Python.

Continue reading "Как автоматизировать серверные процессы в экземпляре SQL Server с помощью Python"

Что такое ad hoc запрос?

Пересказ статьи Kathi Kellenberger. What is an ad hoc query?


Ad hoc запрос - это отдельный запрос, не включенный в хранимую процедуру и не параметризованный или подготовленный. В зависимости от установок сервера, SQL Server может параметризовать некоторые операторы, изначально написанные как ad hoc запросы. Ad hoc не означает динамический.
Continue reading "Что такое ad hoc запрос?"

Что такое опережающее чтение?

Пересказ статьи Chad Callihan. What is a Read-Ahead Read?


Что такое опережающие чтения, и как они влияют на производительность SQL Server? Опережающие чтения позволяют SQL Server заглянуть вперед, чтобы извлечь страницы в буферный кэш прежде, чем они фактически будут затребованы для запроса. До 64 последовательных страниц могут быть прочитаны из файла, а возможность опережающего чтения может применяться как для страниц данных, так и для индексных страниц. Когда страницы оказываются в буферном кэше, то отпадает необходимость извлекать их с диска для будущих запросов, пока они не будут сброшены другими задачами SQL Server.

Continue reading "Что такое опережающее чтение?"

Только левое соединение на основе последующего внутреннего соединения

Пересказ статьи Greg Dodd. Only Left Joining based on Subsequent Inner Join


Несколько затруднительно объяснить, почему вы должны использовать это, поэтому давайте сразу перейдем к примерам. Я создал базу данных Schools, используя этот скрипт от Microsoft, а потом внес в него несколько изменений, чтобы нормализовать таблицу Person:
Continue reading "Только левое соединение на основе последующего внутреннего соединения"

Общие шаблоны плана запроса для соединений: Sorting Lookups

Пересказ статьи Erik Darling. Common Query Plan Patterns For Joins: Sorting Lookups


Многие люди видят lookup и думают "добавить покрывающий индекс" вне зависимости от каких-либо сопутствующих деталей. Затем они добавляют индекс с 40 включенными столбцами для решения чего-то, что не является проблемой.

Сегодня мы собираемся рассмотреть несколько других вещей, которые могут происходить внутри lookup. Continue reading "Общие шаблоны плана запроса для соединений: Sorting Lookups"