Ir al contenido principal

Obtener la fecha del ultimo respaldo de las BD en el server

Si necesitamos obtener la ultima fecha de respaldo completo de una BD, podemos utilizar el siguiente script.




declare @dbname varchar(256)
declare @status varchar(128)
declare dbs_cursor cursor for
select name ,status = case
when status > 31 then 'BD en read only o en Offline'
else 'Normal'
end
from master..sysdatabases

open dbs_cursor
fetch next from dbs_cursor into @dbname,@status

while @@fetch_status = 0
begin
SELECT @dbname,@status,
ISNULL(Convert(char(10), MAX(backup_finish_date), 101), 'Never') Last_Backup
FROM master.dbo.sysdatabases B
LEFT OUTER JOIN msdb.dbo.backupset A
ON A.database_name = B.name
AND A.type = 'D'
WHERE B.name = @dbname
fetch next from dbs_cursor into @dbname,@status
END

close dbs_cursor
deallocate dbs_cursor




Espero que les sea util.

Saludos.

Comentarios

  1. Hola disculpa el atrevimiento le modifique la base de datos de la que consulta tu script para sql 2005 y 2008 obteniendo el status de la base de datos sin necesidad de un case

    declare @dbname varchar(256)
    declare @status varchar(128)
    declare dbs_cursor cursor for
    select name ,state_desc
    from master.sys.databases
    open dbs_cursor
    fetch next from dbs_cursor into @dbname,@status
    while @@fetch_status = 0
    begin
    SELECT @dbname,@status,
    ISNULL(Convert(char(10), MAX(backup_finish_date), 101), 'Never') Last_Backup
    FROM master.dbo.sysdatabases B
    LEFT OUTER JOIN msdb.dbo.backupset A
    ON A.database_name = B.name
    AND A.type = 'D'
    WHERE B.name = @dbname
    fetch next from dbs_cursor into @dbname,@status
    END

    close dbs_cursor
    deallocate dbs_cursor

    espero les sirva

    saludos.

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

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.

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 Edition El 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 SP1 SP2 SP3 SP4 SQL Server 2017 SQL Server 2016 13.0.2149.0 13.0.4001.0 SQL Server 2014 12.0.2000.8 12.0.4100.1 12.0.5000.0 SQL Server 2012 11.0.2100.60 11.0.3000.00 11.0.5058.0 11.0.6020.0 11.0.7001.0 SQL Server 2008 R2 10.50.1600.1 10.50.2500.0 10.50.4000.0 10.50.6000.34 SQL Server 2008 10.00.1600.22   10.00.2531.00 10.00.4000.00 10.00.5500.00 10.0.6000.29 SQL Server 2005 9.00.1399 9.00.2047 9.00.3042 9.00.4035 9.00.5000 SQL Serve...

Migrar los logins / usuarios de SQL Server entre servidores

Cuando necesitamos mover una BD de un servidor a otro, pero queremos que los usuarios tengan los mismos privilegios que en el servidor actual, tenemos que llevar al nuevo servidor tambien los logins. En SQL server es diferente un login a un usuario. Un login es a nivel del Servidor y usario es a nivel de la BD. Si creamos por ejemplo el usuario fer en el servidor A, y luego creo un usuario fer en el servidor B y me llevo la BD produccion al server B el usuario fer es diferente, esto debido a que sql en realidad trabaja con SIDs en lugar del nombre del usuario. Para solucionar esto hay que llevarnos los logins al nuevo server. Como la BD se respalda con los usuarios incluidos, solo hay que recrear los usuarios con su mismo SID en el nuevo server. El script es como sigue: SET NOCOUNT ON SELECT 'EXEC sp_addlogin @loginame = ''' + loginname + '''' ,', @defdb = ''' + dbname + '''' ,', @deflanguage = ''' + langu...