none
Obtener información de las bases de datos. RRS feed

  • Pregunta

  • Saludos colegas;

    Estoy realizando una evaluación de tres servidores que contienen base de datos SQL Server; sin embargo no hay información acerca de ue aplicación usa X base de datos; entonces he decido crear un archivo en excel donde he colocado la ubicación de la db y el nombre, me gustaría agregar a este reporte el tamaño de la base de datos y la ultima conexión que se realizó sobre esta.

    Alguien por casualidad conoce como extraer esa información?

    Desde ya mil gracias.


    Mientras mas aprendo mas quiero aprender

    miércoles, 11 de julio de 2018 19:25

Respuestas

  • Hola A.Dumith:

    El ultimo acceso puedes obtenerlo así.

    SELECT name,(
    			SELECT X1 = MAX(o.xx)
    				FROM
    	(
    		SELECT xx = MAX(last_user_seek)
    		WHERE MAX(last_user_seek) IS NOT NULL
    		UNION ALL
    		SELECT xx = MAX(last_user_scan)
    		WHERE MAX(last_user_scan) IS NOT NULL
    		UNION ALL
    		SELECT xx = MAX(last_user_lookup)
    		WHERE MAX(last_user_lookup) IS NOT NULL
    		UNION ALL
    		SELECT xx = MAX(last_user_update)
    		WHERE MAX(last_user_update) IS NOT NULL
    	) o
    ) as ultimoAcceso
    FROM master.dbo.sysdatabases sd
         LEFT OUTER JOIN sys.dm_db_index_usage_stats s ON sd.dbid = s.database_id
    GROUP BY sd.name;
    

    Y para los tamaños

    SELECT s.name,
           f.filename,
           CASE f.groupid
               WHEN 1
               THEN 'DATOS'
               ELSE 'Log'
           END AS 'Tipo',
           (f.size * 8) / (1024.) AS 'TamañoEnMBs',
    (
        SELECT SUM((f.size * 8) / (1024.))
        FROM master..sysaltfiles f
        WHERE f.dbid = s.database_id
    ) AS TotalDataBase
    FROM sys.databases s,
         master..sysaltfiles f
    WHERE s.database_id = f.dbid
    ORDER BY f.size DESC; 

    Un saludo

    • Marcado como respuesta A.Dumith viernes, 13 de julio de 2018 19:54
    miércoles, 11 de julio de 2018 19:50

Todas las respuestas

  • Hola A.Dumith:

    El ultimo acceso puedes obtenerlo así.

    SELECT name,(
    			SELECT X1 = MAX(o.xx)
    				FROM
    	(
    		SELECT xx = MAX(last_user_seek)
    		WHERE MAX(last_user_seek) IS NOT NULL
    		UNION ALL
    		SELECT xx = MAX(last_user_scan)
    		WHERE MAX(last_user_scan) IS NOT NULL
    		UNION ALL
    		SELECT xx = MAX(last_user_lookup)
    		WHERE MAX(last_user_lookup) IS NOT NULL
    		UNION ALL
    		SELECT xx = MAX(last_user_update)
    		WHERE MAX(last_user_update) IS NOT NULL
    	) o
    ) as ultimoAcceso
    FROM master.dbo.sysdatabases sd
         LEFT OUTER JOIN sys.dm_db_index_usage_stats s ON sd.dbid = s.database_id
    GROUP BY sd.name;
    

    Y para los tamaños

    SELECT s.name,
           f.filename,
           CASE f.groupid
               WHEN 1
               THEN 'DATOS'
               ELSE 'Log'
           END AS 'Tipo',
           (f.size * 8) / (1024.) AS 'TamañoEnMBs',
    (
        SELECT SUM((f.size * 8) / (1024.))
        FROM master..sysaltfiles f
        WHERE f.dbid = s.database_id
    ) AS TotalDataBase
    FROM sys.databases s,
         master..sysaltfiles f
    WHERE s.database_id = f.dbid
    ORDER BY f.size DESC; 

    Un saludo

    • Marcado como respuesta A.Dumith viernes, 13 de julio de 2018 19:54
    miércoles, 11 de julio de 2018 19:50
  • Mil gracias..!

    Es exactamente lo que estaba buscando...


    Mientras mas aprendo mas quiero aprender

    viernes, 13 de julio de 2018 19:54