Начална » как да » Партида скрипт да направи SQL Server поддръжка на бази данни Обикновено

    Партида скрипт да направи SQL Server поддръжка на бази данни Обикновено

    В допълнение към създаването на резервни копия, съществуват разнообразни задачи и функции, които SQL Server предоставя, което може да подобри производителността и надеждността на вашите бази данни. По-рано ви показахме как да архивирате SQL Server базите данни с прост скрипт на командния ред, така че по същия начин предоставяме скрипт, който ще ви позволи лесно да изпълнявате общи задачи за поддръжка..

    Уплътняване / свиване на база данни [/ Compact]

    Има няколко фактора, които допринасят за физическото дисково пространство, което използва базата данни на SQL Server. Само за да назовем няколко:

    • С течение на времето, когато записите се добавят, изтриват и актуализират, SQL непрекъснато се разраства и свива таблици, както и генерира временни структури на данни за извършване на манипулации със заявки. За да отговори на нуждите на дисковото пространство, SQL Server ще увеличи размера на базата данни (обикновено с 10%), ако е необходимо, така че размерът на файла на базата данни не се променя непрекъснато. Въпреки че това е идеално за производителност, то може да доведе до прекъсване на връзката с използваното пространство за съхранение, защото ако например добавите много голям брой записи, които карат базата данни да расте и впоследствие изтриете тези записи, SQL Server няма автоматично да възстанови това дисково пространство.
    • Ако използвате режима на пълно възстановяване на базата данни, файлът с транзакционни дневници (LDF) може да нарасне доста голям, особено в бази данни с голям обем актуализации..

    Уплътняването (или свиването) на базата данни ще възстанови неизползваното дисково пространство. За малки бази данни (200 MB или по-малко) това обикновено не е много, но за големи бази данни (1 GB или повече) възстановеното пространство може да бъде значително.

    Повторно индексиране на база данни [/ Reindex]

    Подобно на непрекъснатото създаване, редактиране и изтриване на файлове може да доведе до фрагментация на диска, вмъкването, актуализирането и изтриването на записи в база данни може да доведе до фрагментация на таблицата. Практическите резултати са едни и същи, когато операциите за четене и запис претърпяват хит на производителността. Въпреки че не е перфектна аналогия, повторното индексиране на таблиците в базата данни ги дефрагментира. В някои случаи това може значително да увеличи скоростта на извличане на данни.

    Поради начина, по който работи SQL Server, таблиците трябва да се реиндексират индивидуално. За бази данни с голям брой таблици това може да бъде истинска болка да се направи ръчно, но нашият скрипт попада на всяка таблица в съответната база данни и възстановява всички индекси..

    Потвърждаване на целостта [/ Verify]

    За да може една база данни да остане функционална и да даде точни резултати, съществуват множество елементи за почтеност, които трябва да бъдат въведени. За щастие, физическите и / или логическите проблеми с целостта не са много чести, но е добра практика понякога да стартирате процеса за проверка на целостта във вашите бази данни и да прегледате резултатите.

    Когато процесът на проверка се изпълнява чрез нашия скрипт, се докладват само грешки, така че няма новина.

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

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

    За да видите помощната информация, трябва само да въведете:

    SQLMaint /?

    Примери

    За да стартирате компакт и след това проверете в базата данни „MyDB“, като използвате надеждна връзка:

    SQLMaint MyDB / Compact / Проверка

    За да стартирате реиндекса и след това да се компактно на “MyDB” на именувания екземпляр “Special” използвайки “sa” потребител с парола “123456”:

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

    Използване от Inside of a Batch Script

    Докато пакетният скрипт на SQLMaint може да се използва като приложение от командния ред, когато го използвате в друг пакетен скрипт, той трябва да бъде предшестван с ключовата дума CALL.

    Например, този скрипт изпълнява всички задачи по поддръжката на всяка несистемна база данни на инсталацията по подразбиране на SQL Server, използвайки надеждна идентификация:

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; SELECT Име от master.dbo.sysDatabases WHERE Име Не IN ('главен', 'модел', 'msdb', 'tempdb') '>% DBList%
    FOR / F „usebackq tokens = 1” DO%% i IN (% DBList%)
    CALL SQLMaint “%% i” / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Изтеглете скрипта на SQLMaint от SysadminGeek.com