Ir al contenido principal

Respaldar todas las Bases de Datos de SQL Server

Hay veces que alguna aplicacion esta creando y eliminando bases de datos continuamente o en ocasiones hay muchas Bases de datos que hace complicado el andar creando jobs o planes de mantenimiento para cada una.

Para esos casos desarrolle un script que permitira respaldar todas las BD de datos (excepto las de systema, northwind, pubs), el script solo realiza respaldos completos.

El script funciona tanto para SQL 2000 como para 2005.

Espero que les sirva.

Saludos.

FR.



/*******FernandoRivas*****************/
/*******http://dbamex.blogspot.com*****/
declare @bases varchar(600)
declare @file varchar(4000)
/* declaracion del cursor que contendra los datos*/
declare nbase cursorforselect name from master..sysdatabases where name not in ('master', 'model', 'msdb', 'pubs', 'northwind', 'tempdb')
/* abrir el cursor*/
open nbase
/*obtener la primer fila del cursor y agregarle el valor a la variable*/
fetch next from nbase into @bases
/*condicion loop a travez de las filas del cursor*/
while @@fetch_status = 0
begin
select @file = 'c:\MSSQL2K\MSSQLBACKUP\'+ @bases + '.bak '
backup database @bases to disk = @file with init
/*obtiene la siguiente fila del cursor y la pone en una variable*/

fetch next from nbase into @bases end
/*cierra el cursor*/
close nbase
deallocate nbase

Comentarios

Entradas más populares de este blog

Como saber que Service Pack tengo instalado en SQL Server?

Para saber que Service pack se tiene instalado en SQL Server, Hay que ejecutar el siguiente comando:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')Este regresa algo parecido a:9.00.3042.00 SP2 Enterprise EditionEl primer registro es la versión, el segundo es el nivel de producto (en este caso Service pack 2), y el ultimo es la edición, En este caso Enterprise.
Esta es una tabla con las versiones de SQL y su respectivo Service pack.
RTM SP1SP2SP3SP4SQL Server 2017SQL Server 201613.0.2149.013.0.4001.0SQL Server 201412.0.2000.812.0.4100.112.0.5000.0SQL Server 201211.0.2100.6011.0.3000.0011.0.5058.011.0.6020.011.0.7001.0SQL Server 2008 R210.50.1600.110.50.2500.010.50.4000.010.50.6000.34SQL Server 2008 10.00.1600.2210.00.2531.0010.00.4000.0010.00.5500.0010.0.6000.29SQL Server 20059.00.13999.00.20479.00.30429.00.40359.00.5000SQL Server 20008.00.1948.00.3848.00.5348.00.7608.00.2039SQL Server 7 7.00.623 7.00.…

Monitoreo de espacio libre en discos desde SQL Server

Update: Una nueva opcion, con powershell esta disponible en el siguiente link, recomiendo mas utilizar la nueva y personalizarla de acuerdo a los requerimientos personales. http://dbamex.blogspot.mx/2017/10/revision-de-espacio-en-servidores.html
Post original:
Uno de los principales indicadores que se tiene que tomar en cuenta como DBA es el espacio disponible en disco. No es problema cuando se tiene un server o 2 para monitorear, sin embargo cuando hay una cantidad considerable automatizar un proceso que lo haga es lo mejor.

Dentro de SQL Server (7,2000,2005) hay un procedimiento no documentado que nos puede ayudar a cumplir este cometido.

El procedimiento es XP_FIXEDDRIVES, no lleva parámetros ni nada y nos regresa todos los discos a los que tiene acceso SQL Server y su espacio disponible en Megabytes.
Si esta en cluster mostrara todos los discos aunque los discos no esten en el mismo grupo que la instancia, lo que puede llegar a confundir.
Dejo a consideración de cada quien como …

Eliminar archivelogs desde RMAN

Estos son algunos ejemplos para eliminar los archivelogs desde RMAN.
Para eliminara todos los archivos expirados sin pedir confirmación.
delete noprompt expired archivelog all;
Para eliminar los archive logs expirados de algún folder en especifico (Pedirá confirmación antes de borrar):
delete expired archivelog like '+FRA/STACK/ARCHIVELOG/2017_03_12/%';
Para eliminar archive logs basados en la fecha de creación, por ejemplo archive logs de mas de 7 dias.  (Sin confirmacion)
delete archivelog until time 'sysdate - 7';

Borrar archivelogs hasta una secuencia en especifico:
delete archivelog until sequence = 43;

Borrar archivelogs desde una secuencia en especifico: (Usar con precaución)
delete archivelog from sequence = 38;
Combinándolas:
delete archivelog from sequence = 38 until sequence = 47;

Saludos. F.R.