Skip to content

Используйте триггеры DDL для автоматической синхронизации представлений SQL Server

Пересказ статьи Aaron Bertrand. Use DDL Triggers to Automatically Keep SQL Server Views in Sync


Сколько бы мы ни говорили людям использовать SCHEMABINDING и избегать использования SELECT *, все же существует множество причин, почему этому не следуют. Хорошо задокументированная проблема с SELECT * в представлениях состоит, в частности, в том, что система кэширует метаданные представления в момент создания представления, а не тогда, когда к представлению выполняется запрос. Если позже таблицы, к которым обращается представление, изменяются, схема представления не отражает эти изменения без обновления, изменения или пересоздания представления. Разве не было бы замечательно, если бы вы могли перестать беспокоиться об этом сценарии и позволили системе автоматически синхронизировать метаданные?
Continue reading "Используйте триггеры DDL для автоматической синхронизации представлений SQL Server"

Распространенные мифы о журналах транзакций SQL Server

Пересказ статьи Jeff Iannucci. Common SQL Server Transaction Log Myths


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

И, пожалуйста, не огорчайтесь, если вы еще верите в некоторые из этих мифов. Просто прекратите верить им после чтения этой статьи. Серьезно, никогда не поздно учиться или, как в нашем случае, переучиваться. ОК, вот правда.
Continue reading "Распространенные мифы о журналах транзакций SQL Server"

Использование предложения TOP в операторе SELECT

Пересказ статьи Greg Larsen. Using TOP clause in a SELECT statement


Иногда вам может потребовать вернуть только несколько строк из результирующего набора, а не все строки. Это может быть полезно, если вы хотите просто проверить критерий отбора на нескольких строках данных. Какой бы ни была причина, предложение TOP может быть полезно для возвращения конкретного числа или процента строк из результирующего набора. В этой статье будет рассмотрено использование предложения TOP в операторе SELECT, и как он может использоваться для возвращения частичного набора записей.
Continue reading "Использование предложения TOP в операторе SELECT"

Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1

Пересказ статьи Andrea Gnemmi. Privileges and Roles in SQL Server, Oracle and PostgreSQL - Part 1


Предоставление привилегий на объект базы данных является наиболее распространенным видом деятельности, которую выполняют администраторы баз данных, стараясь при этом дать разрешения, достаточные для выполнения работы, но не слишком большой доступ. Помните о принципе наименьших привилегий! Иногда это сложно реализовать, и, как мы видели на многих других примерах, имеются некоторые различия в реализации этой функциональности в трех рассматриваемых РСУБД, плюс появились некоторые новые роли в SQL Server 2022. В настоящей статье мы рассмотрим то, как предоставить разрешения в SQL Server, Oracle и PostgreSQL.

В этом руководстве мы дадим обзор различных способов предоставления привилегий в SQL Server, Oracle и PostgreSQL. Будут также представлены различия в концепциях ролей, схем и владельцев, а также способ предоставления разрешений на всю схему. Работая над этой статьей, я осознал, что она становится все больше и больше, поэтому я разбил ее на 2 части. В этой первой части мы сосредоточим внимание на концепции ролей. Continue reading "Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1"

Экономьте время на подсчете, используйте IF EXISTS

Пересказ статьи Chad Callihan. Save Time Counting, Use IF EXISTS


При проверке существования значения или значений в таблице обычно не обязательно читать всю таблицу. Цель состоит в том, чтобы получить больше верных или ложных ответов, независимо от того, соблюдаются критерии или нет. Если критерии выполняются на первых нескольких записях, то нет необходимости продолжать чтение. Тем не менее, вы можете встретить скрипты, написанные с необязательным извлечением полного числа значений в таблице. Давайте сравним разницу в производительности между использованием COUNT(*) и “IF EXISTS” при проверке наличия значений.

Continue reading "Экономьте время на подсчете, используйте IF EXISTS"

Удалить сразу все избыточные индексы в каждой базе данных

Пересказ статьи Eitan Blumin. Drop All Redundant Indexes In Every Database All At Once


Избыточные индексы в SQL Server - это явление значительно более общее, чем мне бы хотелось. Я встречал это довольно часто. Это означает, что данное сообщение в блоге все еще будет иметь значительную целевую аудиторию! :-)

Статья Brent Ozar дает исчерпывающую информацию об избыточных/дублирующих индексах, что они означают, почему это плохо, и что нужно с этим делать.

Continue reading "Удалить сразу все избыточные индексы в каждой базе данных"

Сравнение функций STUFF, REPLACE и WRITE в SQL Server

Пересказ статьи Aubrey Love. SQL STUFF vs SQL REPLACE vs SQL WRITE in SQL Server


Если вы когда-либо решали задачу со строками в Microsoft SQL Server, то, вероятно, уже знакомы с различными строковыми функциями, которые могут упростить процесс решения. Функции STUFF() и REPLACE() наиболее часто используются для обновления строковых значений в таблице. Но .WRITE() является относительно менее известной, не так ли? Continue reading "Сравнение функций STUFF, REPLACE и WRITE в SQL Server"