Stored Procedure per backup

mercoledì 21 giugno 2006 - 15.19

us01739 Profilo | Expert

Buongiorno a tutti,
vi chiedo aiuto per sapere se è possibile creare una stored procedure in SQL2000 contenente le istruzioni per fare il backup e lo shrink dei file.
Ho provato con questo codice, ma non funziona:
CREATE PROCEDURE dbo.p_cap_backup --utilizziamo il database CAP USE CAP --ESEGUO IL TRONCATE SUL LOG BACKUP LOG CAP WITH TRUNCATE_ONLY --eseguo la compattazione del file log DBCC SHRINKFILE ("CAP_LOG") --eseguo la compattazione del file data DBCC SHRINKFILE ("CAP_DATA") --eseguo la compattazione del database lasciando un 25% libero DBCC SHRINKDATABASE (CAP) --imposta il modello di recupero a FULL ALTER DATABASE CAP SET RECOVERY FULL --esegue un backup completo BACKUP DATABASE CAP TO DISK = 'D:\Database_CAP\SQL_BACKUP\CAP.bck' go

C'è qualche buon'anima che mi riesce ad aiutare???
In ogni caso grazie comunque..
---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

lbenaglia Profilo | Guru

>Ho provato con questo codice, ma non funziona:
>CREATE PROCEDURE dbo.p_cap_backup

1) Manca 'AS'

>--utilizziamo il database CAP
>USE CAP

2) USE non puoi utilizzarlo nel body di una stored procedure, pena l'errore:

Msg 154, Level 15, State 1, Procedure <nome procedura>, Line 3
a USE database statement is not allowed in a procedure, function or trigger.

>--ESEGUO IL TRONCATE SUL LOG
>BACKUP LOG CAP WITH TRUNCATE_ONLY
>
>--eseguo la compattazione del file log
>DBCC SHRINKFILE ("CAP_LOG")
>
>--eseguo la compattazione del file data
>DBCC SHRINKFILE ("CAP_DATA")
>
>--eseguo la compattazione del database lasciando un 25% libero
>DBCC SHRINKDATABASE (CAP)

3) Se shrinki singolarmente il master data file ed il transaction log, che senso ha shrinkare nuovamente l'intero database?

>--imposta il modello di recupero a FULL
>ALTER DATABASE CAP SET RECOVERY FULL

4) L'impostazione del recovery model non ha senso effettuarla ogni volta che richiami la sp. Inoltre che senso ha impostare il FULL recovery model se shrinki il transaction log (quindi significa che non hai implementato una politica di backup basata sul transaction log)? Non sarebbe meglio dimensionare opportunamente il transaction log ed impostare il recovery model a SIMPLE in modo che venga automaticamente riutilizzato lo spazio allocato?

>--esegue un backup completo
>BACKUP DATABASE CAP TO DISK = 'D:\Database_CAP\SQL_BACKUP\CAP.bck'

5) A fronte di quanto riporato sopra, che senso ha implementare una sp per effettuare il backup?
Non puoi semplicemente schedulare un JOB che ad ogni intervallo da te stabilito esegua il comando T-SQL BACKUP DATABASE?

>In ogni caso grazie comunque..
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

us01739 Profilo | Expert

Anche se non sono un'esperto mi sembra evidente che ho scritto un mucchio di fesserie..
Cosa intendi quando scrivi "..Non sarebbe meglio dimensionare opportunamente il transaction log ed impostare il recovery model a SIMPLE in modo che venga automaticamente riutilizzato lo spazio allocato?.."

Il mio problema per cui facevo lo shrink dei file, era perchè a fronte di un database di 350MB, il file log era diventato oltre 51GB.....

Quello che tu mi consigli, mi può aiutare anche per questo?
Per concludere, il mio scopo era fare una sp per poterla poi richiamare da un job settimanale che provvedesse a "shrinkare" il tutto ed evitare queste dimensioni...


---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

lbenaglia Profilo | Guru

>Cosa intendi quando scrivi "..Non sarebbe meglio dimensionare
>opportunamente il transaction log ed impostare il recovery model
>a SIMPLE in modo che venga automaticamente riutilizzato lo spazio
>allocato?.."
>
>Il mio problema per cui facevo lo shrink dei file, era perchè
>a fronte di un database di 350MB, il file log era diventato oltre
>51GB.....

Leggi questo tip:
http://www.dotnethell.it/tips/ShrinkTLOGSql2000.aspx

>Quello che tu mi consigli, mi può aiutare anche per questo?
Si.

>Per concludere, il mio scopo era fare una sp per poterla poi
>richiamare da un job settimanale che provvedesse a "shrinkare"
>il tutto ed evitare queste dimensioni...

Con il SIMPLE recovery model non dovrai più shrinkare un bel niente e una volta individuata una dimensione "di lavoro", il tuo t-log si stabilizzerà.
Il JOB settimanale fallo, ma solo per effettuare un FULL BACKUP dei tuoi dati

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5