/ / Batch-script om onderhoud van SQL Server-database eenvoudig te maken

Batch-script om onderhoud van SQL Server-database eenvoudig te maken

Naast het maken van back-ups zijn er eenverschillende taken en functies SQL Server stelt beschikbaar die zowel de prestaties als de betrouwbaarheid van uw databases kunnen verbeteren. We hebben u eerder laten zien hoe u een back-up kunt maken van SQL Server-databases met een eenvoudig opdrachtregelscript, dus op dezelfde manier bieden we een script waarmee u eenvoudig algemene onderhoudstaken kunt uitvoeren.

Een database comprimeren / verkleinen [/ Compact]

Er zijn verschillende factoren die bijdragen aan de fysieke schijfruimte die een SQL Server-database gebruikt. Om er een paar te noemen:

  • Na verloop van tijd als records worden toegevoegd, verwijderd enbijgewerkt, SQL groeit en krimpt voortdurend tabellen en genereert tijdelijke datastructuren om querymanipulaties uit te voeren. Om tegemoet te komen aan de behoefte aan schijfopslag, zal SQL Server de omvang van de database (meestal met 10%) naar behoefte vergroten, zodat de bestandsgrootte van de database niet constant verandert. Hoewel dit ideaal is voor prestaties, kan het de verbinding met de gebruikte opslagruimte verbreken, want als u bijvoorbeeld een zeer groot aantal records toevoegt waardoor de database groeit en vervolgens deze records verwijdert, zal SQL Server dit niet automatisch terugvorderen schijfruimte.
  • Als u de volledige herstelmodus in uw databases gebruikt, kan het transactionele logbestand (LDF) behoorlijk groot worden, vooral in databases met veel updates.

Het comprimeren (of krimpen) van de database zalclaim ongebruikte schijfruimte. Voor kleine databases (200 MB of minder) zal dit meestal niet veel zijn, maar voor grote databases (1 GB of meer) kan de teruggewonnen ruimte aanzienlijk zijn.

Een database opnieuw indexeren [/ Reindex]

Net als constant creëren, bewerken enhet verwijderen van bestanden kan leiden tot schijffragmentatie, het invoegen, bijwerken en verwijderen van records in een database kan leiden tot tabelfragmentatie. De praktische resultaten zijn hetzelfde in die zin dat lees- en schrijfbewerkingen getroffen worden door een prestatie. Hoewel het geen perfecte analogie is, defragmenteert u de tabellen in een database in wezen ze. In sommige gevallen kan dit de snelheid van het ophalen van gegevens aanzienlijk verhogen.

Vanwege de manier waarop SQL Server werkt, moeten tabellen zijnindividueel opnieuw geïndexeerd. Voor databases met een groot aantal tabellen kan dit heel lastig zijn om handmatig te doen, maar ons script raakt elke tabel in de respectieve database en bouwt alle indexen opnieuw op.

Integriteit verifiëren [/ Verifiëren]

Om ervoor te zorgen dat een database beide functioneel blijften nauwkeurige resultaten opleveren, er zijn tal van integriteitsitems die aanwezig moeten zijn. Gelukkig zijn fysieke en / of logische integriteitsproblemen niet erg gebruikelijk, maar het is een goede gewoonte om af en toe het integriteitsverificatieproces in uw databases uit te voeren en de resultaten te bekijken.

Wanneer het verificatieproces door ons script wordt uitgevoerd, worden alleen fouten gerapporteerd, dus geen nieuws is goed nieuws.

Het script gebruiken

Het SQLMaint-batchscript is compatibel met SQL2005 en hoger en moet worden uitgevoerd op een computer waarop het hulpprogramma SQLCMD is geïnstalleerd (geïnstalleerd als onderdeel van de SQL Server-installatie). Het wordt aanbevolen om dit script neer te zetten op een locatie die is ingesteld in uw Windows PATH-variabele (d.w.z. C: Windows), zodat het gemakkelijk kan worden opgeroepen zoals elke andere toepassing vanaf de opdrachtregel.

Om de helpinformatie te bekijken, voert u eenvoudig in:

SQLMaint /?

beeld

Voorbeelden

Een compact uitvoeren en vervolgens een verificatie uitvoeren in de database "MyDB" met een vertrouwde verbinding:

SQLMaint MyDB / Compact / Verify

Om een ​​reindex uit te voeren en vervolgens te comprimeren op "MyDB" op de genoemde instantie "Special" met de "sa" -gebruiker met wachtwoord "123456":

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

Gebruik van binnenuit een batch-script

Hoewel het batchscript SQLMaint kan worden gebruikt als een toepassing vanaf de opdrachtregel, moet het, wanneer u het in een ander batchscript gebruikt, worden voorafgegaan door het sleutelwoord CALL.

Dit script voert bijvoorbeeld alle onderhoudstaken uit op elke niet-systeemdatabase op een standaard SQL Server-installatie met behulp van vertrouwde authenticatie:

@ECHO UIT
SETLOCALExtensions inschakelen
SET DBList = ”% TEMP% DBList.txt”
SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; SELECTEER Naam VAN master.dbo.sysDatabases WAAR Naam NIET IN (‘master’, ’model’, ’msdb’, ’tempdb’) ”>% DBList%
FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DOEN (
CALL SQLMaint “%% i” / Compact / Reindex / Verify
ECHO +++++++++++
)
ALS BESTAAN% DBList% DEL / F / Q% DBList%
ENDLOCAL

Download het SQLMaint Batch-script van SysadminGeek.com