(Возврат на основную страницу)
Аудит всех прав
Джим Себастьяно (Jim Sebastiano)
Статистика индексов SQL Server
Грег Ларсен (Greg Larsen)
Создание скриптов для заданий для SQL Server версий 2000 2005
or 2008
By Gene Hunter (Джин Хантер)
Оптимизатор запросов SQL Server
Бенджамин Неварез (Benjamin Nevarez)
Хранимая процедура для поиска и замены текста
By Gene Hunter (Джин Хантер)
Аудит всех прав
Джим Себастьяно (Jim Sebastiano)
Предлагаемый код используется для аудита всех прав, которые существуют в рамках
SQL Server. Он сканирует все БД на сервере (отдельный код, который работает на
уровне индивидуальной БД приведен в конце и закомментирован). Код возвращает
четыре набора данных:
1. Список тех, кто входит в серверные роли
2. Список ролей в каждой БД с указанием, что это за роль и что она может делать
3. Список ролей, в которые включены пользователи
4. Список пользователей, коорые имеют доступ к объектам за рамками роли
Примечание: Этот код был написан для MS SQL Server 2005 и использует
недокументированные таблицы вместо стандартных процедур. Возможно, он не будет
работать в будущих версиях SQL Server.
От редакции. Мы проверили приведенный код на SQL Server 2008 R2 (2008 R2 SP1 +
Cumulative Update 2) и все работало без ошибок.
Статистика индексов SQL Server
Грег Ларсен (Greg Larsen)
Не устарела ли ваша статистика индексов? Ядро СУБД SQL Server пользуется этими
статистическими данными, чтобы определить, какой план выполнения применить при
компиляции запроса. Статистика индексов используется для того, чтобы ядру SQL
Server легче было определить количество отличающихся значений в столбцах
таблицы. Если вы хотите обеспечить SQL Server возможность преуспеть в выборе
оптимального плана выполнения, необходимо гарантировать ведение статистики
индексов. Это особенно важно для таблицы, которая содержит очень много строк.
Если ваша статистика устарела, SQL Server может выбрать далеко не оптимальный
план выполнения. Прочитав эту статью, вы получите общее представление о том, что
собой представляют упомянутые статистические данные, а также узнаете, как быть
со статистикой, утратившей свою актуальность.
Что это такое – статистика индексов SQL Server?
Статистика индексов содержит сведения о распределении значений ключа индекса.
Под распределением я понимаю число строк, ассоциированных с каждым значением
ключа. SQL Server пользуется этой информацией, чтобы определить, какого рода
план выполнения следует использовать при обработке запроса. Когда вы вставляете
или удаляете записи в таблице, статистические данные оказываются устаревшими для
обновленной таблицы. Они устаревают, потому что SQL Server не обновляет
статистику каждый раз, когда вы изменяете строку в таблице.
Чтобы SQL Server оценил распределение значений ключа, ему необходимо иметь
выборку данных. Сервер SQL Server осуществляет такую выборку двумя разными
способами. Он может либо просмотреть каждую строку в таблице, чтобы вычислить
точные статистические данные, либо обработать частичную выборку, чтобы
определить распределение ключевых значений. Размер выборки определяется как
некий процент от общего числа записей или может быть выражен собственно числом
записей, на основании которых формируется статистика. Можете себе представить,
каким затратным могло бы быть создание статистических данных, если бы для этого
считывалась каждая строка очень большой таблицы, содержащей миллиарды строк.
Создание скриптов для заданий для SQL Server версий 2000 2005 or
2008
By Gene Hunter (Джин Хантер)
Все очень просто, вам только следует знать вот что:
SQL Server 2000 использует 'Ole Automation' процедуры
SQL Server 2005 использует vbscript
SQL Server 2008 использует powershell
Код написан таким образом, потому что иначе было бы слишком сложно реализовать
задачу, возможно, кто-то сделает лучше.
Если у вас не установлен powershell для SQL Server 2008, вы можете использовать
версию на vbscript и для 2008. Просто поменяйте указатель на ссылку.
Оптимизатор запросов SQL Server
Бенджамин Неварез (Benjamin Nevarez)
Чтобы разобраться в том, как пишется высокопроизводительный SQL-код для SQL
Server, важно понимать, как работает оптимизатор запросов. Бен Неварез (Ben
Nevarez) объясняет основные принципы, всесторонне рассматривая эту сложную тему
в статье, взятой из его новой книги «Inside the SQL Server Query Optimizer».
Оптимизатор запросов (Query Optimizer), реализованный в СУБД SQL Server,
является стоимостным оптимизатором (cost-based optimizer). Он анализирует
несколько вариантов плана выполнения данного запроса, оценивает стоимость
каждого из предполагаемых вариантов и выбирает из них план с наименьшей
стоимостью. Правда, если принять во внимание, что оптимизатор запросов не в
состоянии рассмотреть все возможные планы выполнения для каждого запроса, то на
самом деле он должен обеспечить стоимостной баланс, учитывая как затраты на
нахождение вероятных планов выполнения, так и стоимость самих планов.
Таким образом, именно оптимизатор запросов является тем компонентом SQL Server,
который оказывает наибольшее влияние на производительность ваших баз данных. В
конце концов, выбор правильного (или ошибочного) плана выполнения мог бы
означать разницу во времени выполнения запроса, измеряемого миллисекундами или
минутами, или даже часами. Естественно, более глубокое понимание того, как
работает оптимизатор запросов, может помочь как администраторам баз данных, так
и разработчикам, способствуя написанию более совершенных запросов и позволяя
предоставить оптимизатору запросов ту информацию, в которой он нуждается для
выработки эффективных планов выполнения.
Хранимая процедура для поиска и замены текста
By Gene Hunter (Джин Хантер)
Хотя Transact SQL - не самый удобный язык для работы со строками, такая
потребность иногда возникает. В статье предлагается код процедуры для поиска и
замены текста.
(Возврат на основную страницу)