Домашняя » как » Пакетный скрипт для упрощения обслуживания базы данных SQL Server

    Пакетный скрипт для упрощения обслуживания базы данных SQL Server

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

    Сжатие / сжатие базы данных

    Существует несколько факторов, влияющих на физическое дисковое пространство, используемое базой данных SQL Server. Просто назвать несколько:

    • Со временем, когда записи добавляются, удаляются и обновляются, SQL постоянно растет и сокращает таблицы, а также создает временные структуры данных для выполнения запросов. Чтобы удовлетворить потребности дискового пространства, SQL Server будет увеличивать размер базы данных (обычно на 10%) по мере необходимости, чтобы размер файла базы данных не менялся постоянно. Хотя это идеально для производительности, оно может вызвать отключение от используемого пространства хранения, потому что, если, например, вы добавите очень большое количество записей, что приведет к росту базы данных, и впоследствии удалите эти записи, SQL Server не будет автоматически восстанавливать это дисковое пространство.
    • Если вы используете режим полного восстановления в своих базах данных, файл журнала транзакций (LDF) может стать довольно большим, особенно в базах данных с большим объемом обновлений..

    Сжатие (или сжатие) базы данных освободит неиспользуемое дисковое пространство. Для небольших баз данных (200 МБ или менее) это обычно будет не очень много, но для больших баз данных (1 ГБ или более) освобожденное пространство может быть значительным.

    Переиндексация базы данных [/ Reindex]

    Как постоянное создание, редактирование и удаление файлов может привести к фрагментации диска, так как вставка, обновление и удаление записей в базе данных могут привести к фрагментации таблицы. Практические результаты совпадают в том, что операции чтения и записи страдают от снижения производительности. Хотя это и не идеальная аналогия, переиндексация таблиц в базе данных фактически дефрагментирует их. В некоторых случаях это может значительно увеличить скорость поиска данных..

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

    Проверка целостности

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

    Когда процесс проверки запускается через наш скрипт, сообщается только об ошибках, поэтому никакие новости не являются хорошими новостями.

    Использование скрипта

    Пакетный сценарий SQLMaint совместим с SQL 2005 и более поздними версиями и должен запускаться на компьютере, на котором установлен инструмент SQLCMD (установлен как часть установки SQL Server). Рекомендуется поместить этот сценарий в папку, заданную в переменной Windows PATH (например, C: Windows), чтобы его можно было легко вызывать, как и любое другое приложение, из командной строки..

    Чтобы просмотреть справочную информацию, просто введите:

    SQLMaint /?

    Примеры

    Чтобы запустить компактный и затем проверить базу данных «MyDB» с использованием доверенного соединения:

    SQLMaint MyDB / Compact / Verify

    Чтобы запустить переиндексацию и затем сжать «MyDB» на именованном экземпляре «Special», используя пользователя «sa» с паролем «123456»:

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

    Использование изнутри пакетного скрипта

    Хотя пакетный сценарий SQLMaint можно использовать как приложение из командной строки, при использовании его внутри другого пакетного сценария ему должно предшествовать ключевое слово CALL.

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

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q «SET NoCount ON; ВЫБЕРИТЕ имя ИЗ master.dbo.sysDatabase, ГДЕ имя не IN ('master', 'model', 'msdb', 'tempdb') ”>% DBList%
    FOR / F «маркеры usebackq = 1» %% i IN (% DBList%) DO (
    ВЫЗВАТЬ SQLMaint «%% i» / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Загрузите пакетный скрипт SQLMaint с сайта SysadminGeek.com