Партида скрипт да направи 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