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

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

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

    Ущільнення / скорочення бази даних [/ Compact]

    Є кілька факторів, які сприяють фізичному дисковому простору, який використовує база даних 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; Ім'я SELECT FROM master.dbo.sysDatabases WHERE Ім'я не IN ('master', 'model', 'msdb', 'tempdb') '>% DBList%
    FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
    CALL SQLMaint "%% i" / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Завантажити пакетний скрипт SQLMaint з SysadminGeek.com