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

Ушчыльненне / ўсаджванне базы дадзеных [/ Compact]

Некалькі фактараў спрыяюць фізічнай прасторы дыска, якую выкарыстоўвае база дадзеных SQL Server. Проста назваць некалькі:

  • З часам, калі запісы дадаюцца, выдаляюцца і абнаўляюцца, SQL пастаянна расце і скарачаецца табліцы, а таксама стварае часовыя структуры дадзеных для выканання маніпуляцый з запытамі. Для таго, каб задаволіць патрэбы захоўвання дыска, SQL Server пры неабходнасці павялічыць памер базы дадзеных (звычайна на 10%), таму памер файла базы дадзеных не змяняецца пастаянна. Хоць гэта ідэальна для прадукцыйнасці, гэта можа прывесці да разрыву з выкарыстанай прасторай захоўвання, таму што, калі, напрыклад, вы дадасце вельмі вялікую колькасць запісаў, што прымушае базу дадзеных расці і пасля гэтага выдаляць гэтыя запісы, SQL Server не будзе аўтаматычна вяртаць гэта. прастора на дыску. Калі вы выкарыстоўваеце рэжым поўнага аднаўлення ў сваіх базах, файл часопіса транзакцый (LDF) можа вырасці даволі вялікі, асабліва ў базах дадзеных з вялікім аб'ёмам абнаўленняў.

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

Паўторнае дэксіраванне базы дадзеных [/ Reindex]

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

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

Праверка цэласнасці [/ Verify]

Для таго, каб база дадзеных заставалася функцыянальнай і давала дакладныя вынікі, існуюць шматлікія элементы цэласнасці. На шчасце, праблемы з фізічнай і / або лагічнай цэласнасцю сустракаюцца не вельмі часта, але добра практыка перыядычна запускаць працэс праверкі цэласнасці ў вашых базах дадзеных і праглядаць вынікі.

Калі працэс праверкі запускаецца праз наш сцэнар, паведамляюцца толькі памылкі, таму ніякая навіна не з'яўляецца добрай навіной.

Выкарыстанне сцэнарыя

Пакетны скрыпт 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 OFFSETLOCAL EnableExtensionsSET DBList = "% TEMP% DBList.txt" SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; ВЫБРАЦЬ ІМЯ З master.dbo.sysDatabases WHERE Name Not IN ('master', 'model', 'msdb', 'tempdb') ">% DBList% FOR / F" usebackq tokens = 1 "%% i IN (% DBList %) DO (CALL SQLMaint "%% i" / Compact / Reindex / VerifyECHO +++++++++++) КАЛІ ІСЦЬ% DBList% DEL / F / Q% DBList% ENDLOCAL

Загрузіце пакетны сцэнар SQLMaint з SysadminGeek.com