A més de crear còpies de seguretat, hi ha una varietat de tasques i funcions que SQL Server posa a la seva disposició, que tant poden millorar el rendiment com la fiabilitat de les vostres bases de dades. Anteriorment us hem mostrat com fer còpies de seguretat de bases de dades SQL Server amb un script senzill de línia d’ordres, de manera que us proporcionem un script que us permetrà realitzar tasques de manteniment habituals.

Compactació / reducció d'una base de dades [/ Compacte]

Hi ha diversos factors que contribueixen a l’espai de disc físic que utilitza una base de dades de SQL Server. Només per citar-ne alguns:

  • Amb el pas del temps a mesura que s’afegeixen, s’eliminen i s’actualitzen registres, SQL està creixent i reduint constantment taules i genera estructures de dades temporals per realitzar manipulacions de consulta. Per adaptar-se a les necessitats d'emmagatzematge de disc, SQL Server augmentarà la mida de la base de dades (generalment en un 10%) segons sigui necessari, per tant, la mida del fitxer de la base de dades no canvia constantment. Tot i que això és ideal per al rendiment, pot provocar una desconnexió amb l’espai d’emmagatzematge utilitzat perquè si, per exemple, hi afegeixes un nombre molt gran de registres que fa que la base de dades creixi i esborri posteriorment, SQL Server no reclamarà automàticament això espai de disc. Si feu servir el mode de recuperació completa a les vostres bases de dades, el fitxer de registre de transaccions (LDF) pot créixer força, especialment en bases de dades amb un alt volum d’actualitzacions.

Compactant (o reduint) la base de dades reclamarà espai de disc no utilitzat. Normalment, per a bases de dades petites (200 MB o menys), no serà gaire gran, però per a grans bases de dades (1 GB o més) l’espai reclamat pot ser significatiu.

Reindexant una base de dades [/ Reindex]

Igual que crear constantment, editar i suprimir fitxers pot provocar la fragmentació del disc, la inserció, l’actualització i la supressió de registres d’una base de dades pot provocar la fragmentació de la taula. Els resultats pràctics són els mateixos, ja que les operacions de lectura i escriptura pateixen un èxit de rendiment. Tot i que no sigui una analogia perfecta, essencialment la desfragmentació de les taules de la base de dades. En alguns casos, això pot augmentar significativament la velocitat de recuperació de dades.

A causa del funcionament de SQL Server, les taules s'han de reexexentar de manera individual. Per a bases de dades amb un gran nombre de taules, pot ser realment dolorós fer-ho manualment, però el nostre script guia totes les taules de la base de dades respectives i reconstrueix tots els índexs.

Verificació de la integritat [/ Verificar]

Per tal que una base de dades segueixi sent funcional i produeixi resultats precisos, hi ha nombrosos ítems d’integritat que han d’estar en lloc. Afortunadament, els problemes d’integritat física i / o lògica no són gaire freqüents, però és bona pràctica executar ocasionalment el procés de verificació d’integritat a les vostres bases de dades i revisar els resultats.

Quan el procés de verificació s’executa a través del nostre script, només s’informen errors, de manera que cap notícia és una bona notícia.

Ús del guió

L'script de lots SQLMaint és compatible amb SQL 2005 i versions posteriors i s'ha d'executar en una màquina que té instal·lada l'eina SQLCMD (instal·lada com a part de la instal·lació de SQL Server). Es recomana deixar aquest script en una ubicació establerta a la variable PATH de Windows (és a dir, C: Windows) per la qual cosa es pot trucar fàcilment com qualsevol altra aplicació de la línia de comandaments.

Per veure la informació d’ajuda, només cal que introduïu:


SQLMaint /?
imatge

Exemples

Per executar un compacte i una verificació a la base de dades "MyDB" mitjançant una connexió de confiança:


SQLMaint MyDB / Compact / Verify

Per executar un reindex i compactar-lo a "MyDB" en la instància anomenada "Special" mitjançant l'usuari "sa" amb la contrasenya "123456":


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

Utilitzant des d'un guió per lots

Si bé l'script per lots SQLMaint es pot utilitzar com una aplicació de la línia d'ordres, quan l'utilitzeu dins d'un altre script de lots, ha d'anar precedit amb la paraula clau CALL.

Per exemple, aquest script executa totes les tasques de manteniment de totes les bases de dades que no són del sistema en una instal·lació predeterminada de SQL Server mitjançant autenticació de confiança:

@ECHO OFFSETLOCAL EnableExtensionsSET DBList = "% TEMP% DBList.txt" SqlCmd -E -h-1 -w 300-Q "SET NoCount ON; SELECCIONA Nom DE master.dbo.sysDatabases ON ON Name Name IN ('master', 'model', 'msdb', 'tempdb') ">% DBList% FOR / F" usebackq tokens = 1 "%% i IN (% DBList %) DO (CONVOCA SQLMaint “%% i” / Compact / Reindex / VerifyECHO +++++++++++) SI EXISTA% DBList% DEL / F / Q% DBList% ENDLOCAL

Descarregueu l'script de lots de SQLMaint de SysadminGeek.com