Control cruzado de estado de la base de datos

Imagen de kenneth

Votar: 

Average: 5 (22 votes)

Cual es el problema a entender?

Muchas veces nos hemos encontrado con que una alerta nos falla, y dejamos de lado la revision de una base de datos, ya que estamos a la espera de que una alerte llegue, de ahi es donde comienzan a salir los sistemas de monitoreo especilizado.

El problema es qeu en algunos casos no se tienen los recursos para poder implementar ese sistema de monitoreo, y confimos 100% al sistema de alertas de SQL Server. Pues bueno este no deberia fallar, cierto? 

Bueno, si tan solo la realidad fuera asi, pero ni modo, debemos tener controles cruzados del estado de nuestra base de datos, y del estado del mismo, para tener claro que estamos cumpliendo los SLA(Service Level Agrement por la siglas en ingles) y no llevarnos una sorpresa en caso de una falla.

Al menos a que le deberia prestar atención?

Yo en lo personal me preocupo bastante por el estado de:

  • Ultima ejecución satisfactoria de CheckDB (DbccLastknowGood): Si mi base de datos enfrenta problemas de corrupción quiero saberlo lo mas proto que pueda, para comenzar a actuar rápido, acuerdese que la base de datos siempre va a fallar en el momento mas inoportuno.
  • Tener los backups al dia: Si estoy sin respaldos, es como caminar la cuerda floja en un risco de 300 metros de altura, sin una net que te proteja.
  • Tamaño de la base de datos (Log y datos): El Log File de una base de datos no deberia de crecer de forma desatendida, si eso esta pasando, que cambió en mi base de datos que esta cambiando el patrón de utilización?
  • Cantidad de VLF's: Para mas detalle pueden revisar el post de Kimberly Tripp Transaction Log VLFs – too many or too few?
  • Modos de compatibilidad: Me gusta ver que mi base de datos esta corriendo en modo nativo, no en modo compatible.

Como lo puedo hacer?

  • Mediante un script que recolecte esta información de forma periodica y la almacene en un repositorio central para que yo la pueda examinar.
  • Tambien hay herramientas, que se encargan de ejecutar queries en multiple servidores, tales como:

La idea es recolectar la informacion y revisarla periodicamente. Yo desarrolle el siguiente script(A exepción de la parte que obtine la ultima vez que se ejecuto checkDB que fue tomado del blog dce Jason BrimHall, de su artículo Last Time CheckDB was Run, el cual me ha sido bastante útil, Importante de aclarar que este query fue probado en SQL 2012 y 2014:

  1. IF OBJECT_ID('tempdb..#temp') IS NOT NULL
  2.     DROP TABLE #temp
  3. IF OBJECT_ID('tempdb..#tempLOG') IS NOT NULL
  4.     DROP TABLE #tempLOG
  5. IF OBJECT_ID('tempdb..#DB_VLF') IS NOT NULL
  6.     DROP TABLE #DB_VLF
  7. IF OBJECT_ID('tempdb..#DBCCRes') IS NOT NULL
  8.     DROP TABLE #DBCCRes
  9.  
  10.  
  11. CREATE TABLE #temp
  12.     (
  13.       Id INT IDENTITY(1, 1) ,
  14.       ParentObject VARCHAR(255) ,
  15.       [OBJECT] VARCHAR(255) ,
  16.       Field VARCHAR(255) ,
  17.       [VALUE] VARCHAR(255)
  18.     )
  19. CREATE TABLE #tempLOG
  20.     (
  21.       RecoveryUnitId INT ,
  22.       fieldId INT ,
  23.       FileSize BIGINT ,
  24.       StartOfset BIGINT ,
  25.       FSeqNo BIGINT ,
  26.       [STATUS] INT ,
  27.       parity INT ,
  28.       createLSN NUMERIC(25,0)
  29.     )
  30. CREATE TABLE #DB_VLF
  31.     (
  32.       database_name SYSNAME ,
  33.       qtyVlfs INT
  34.     )
  35.          
  36. CREATE TABLE #DBCCRes
  37.     (
  38.       Id INT IDENTITY(1, 1)
  39.              PRIMARY KEY CLUSTERED ,
  40.       DBName SYSNAME ,
  41.       dbccLastKnownGood DATETIME ,
  42.       RowNum INT
  43.     )
  44.  
  45. DECLARE @DBName SYSNAME ,
  46.     @SQL VARCHAR(512);
  47.  
  48. DECLARE dbccpage CURSOR LOCAL STATIC FORWARD_ONLY READ_ONLY
  49. FOR
  50.     SELECT  name
  51.     FROM    sys.databases
  52.     WHERE   1 = 1
  53.             AND STATE = 0
  54.         --And name NOT IN ('tempdb')
  55.     ;
  56.  
  57. OPEN dbccpage;
  58. FETCH NEXT FROM dbccpage INTO @DBName;
  59. WHILE @@FETCH_STATUS = 0
  60.     BEGIN
  61.         SET @SQL = ''
  62.         SET @SQL = 'Use [' + @DBName + '];' + CHAR(10) + CHAR(13)
  63.         SET @SQL = @SQL + 'DBCC Page ( [' + @DBName
  64.             + '],1,9,3) WITH TABLERESULTS;' + CHAR(10) + CHAR(13)
  65.  
  66.         INSERT  INTO #temp
  67.                 EXECUTE ( @SQL
  68.                        );
  69.         SET @SQL = 'Use [' + @DBName + '];' + CHAR(10) + CHAR(13)
  70.         SET @SQL = @SQL + 'DBCC LOGINFO ( ' + '''' + @DBName + ''''
  71.             + ') WITH TABLERESULTS;' + CHAR(10) + CHAR(13)
  72.  
  73.         INSERT  INTO #tempLOG
  74.                 EXECUTE ( @SQL
  75.                        );
  76.  
  77.  
  78.         INSERT  INTO #DBCCRes
  79.                 ( DBName ,
  80.                   dbccLastKnownGood ,
  81.                   RowNum
  82.                 )
  83.                 SELECT  @DBName ,
  84.                         VALUE ,
  85.                         ROW_NUMBER() OVER ( PARTITION BY Field ORDER BY VALUE ) AS Rownum
  86.                 FROM    #temp
  87.                 WHERE   Field = 'dbi_dbccLastKnownGood';
  88.         INSERT  INTO #DB_VLF
  89.                 ( database_name ,
  90.                   qtyVlfs
  91.                 )
  92.                 SELECT  @DBName ,
  93.                         COUNT(1)
  94.                 FROM    #tempLOG
  95.                        
  96.         TRUNCATE TABLE #temp;
  97.         TRUNCATE TABLE #tempLOG
  98.  
  99.         FETCH NEXT FROM dbccpage INTO @DBName;
  100.     END
  101. CLOSE dbccpage;
  102. DEALLOCATE dbccpage;
  103. DROP TABLE #temp
  104. DROP TABLE #tempLOG
  105.  
  106. DELETE  FROM #DBCCRes
  107. WHERE   RowNum <> 1
  108.  
  109. SELECT  d.name AS databaseName ,
  110.         CASE WHEN d.database_id < 5 THEN 'System Database '
  111.              WHEN name LIKE 'ReportServer%' THEN 'SSRS System Database'
  112.              ELSE 'User Database '
  113.         END AS DatabaseType ,
  114.         CASE WHEN d.compatibility_level = 120 THEN '2014'
  115.              WHEN d.compatibility_level = 110 THEN '2012'
  116.              WHEN d.compatibility_level = 100 THEN '2008'
  117.              WHEN d.compatibility_level = 90 THEN '2005'
  118.              WHEN d.compatibility_level = 80 THEN '2000'
  119.              ELSE 'unkow'
  120.         END AS DatabaseCompatibleMode ,
  121.         @@VERSION AS 'SQL Server Version' ,
  122.         t.dbccLastKnownGood AS lastRanCheckDB ,
  123.         SIZE.qtyDataFileGroups ,
  124.         SIZE.qtyDataFiles ,
  125.                 l.qtyVlfs AS qtyVLFs,
  126.         SIZE.sizeMBLog ,
  127.         SIZE.sizeMBData ,
  128.         d.user_access_desc ,
  129.         d.state_desc ,
  130.         d.snapshot_isolation_state ,
  131.         d.is_read_committed_snapshot_on ,
  132.         d.recovery_model_desc ,
  133.         d.page_verify_option_desc ,
  134.         d.is_broker_enabled ,
  135.         d.is_cdc_enabled ,
  136.         d.containment_desc ,
  137.         backups.*
  138. FROM    sys.databases d
  139.         LEFT OUTER JOIN ( SELECT    database_id ,
  140.                                     COUNT(DISTINCT CASE WHEN type_desc = 'LOG'
  141.                                                         THEN NULL
  142.                                                         ELSE data_space_id
  143.                                                    END) AS qtyDataFileGroups ,
  144.                                     COUNT(DISTINCT CASE WHEN type_desc = 'LOG'
  145.                                                         THEN NULL
  146.                                                         ELSE FILE_ID
  147.                                                    END) AS qtyDataFiles ,
  148.                                     SUM(CASE WHEN type_desc = 'LOG' THEN SIZE
  149.                                              ELSE 0
  150.                                         END) * 8.0 / 1024.0 AS sizeMBLog ,
  151.                                     SUM(CASE WHEN type_desc = 'LOG' THEN 0
  152.                                              ELSE SIZE
  153.                                         END) * 8.0 / 1024.0 AS sizeMBData
  154.                           FROM      sys.master_files
  155.                           GROUP BY  database_id
  156.                         ) AS SIZE ON SIZE.database_id = d.database_id
  157.         LEFT OUTER JOIN ( SELECT    database_name ,
  158.                                     MAX(CASE WHEN bs.type = 'D'
  159.                                              THEN bs.backup_start_date
  160.                                              ELSE NULL
  161.                                         END) AS lastFullBackUp ,
  162.                                     MAX(CASE WHEN bs.type = 'D'
  163.                                              THEN DATEDIFF(MINUTE,
  164.                                                            bs.backup_start_date,
  165.                                                            bs.backup_finish_date)
  166.                                              ELSE NULL
  167.                                         END) AS lastFullBackUp_DurationMinutes ,
  168.                                     MAX(CASE WHEN bs.type = 'D'
  169.                                              THEN bs.backup_size / 1024.0
  170.                                                   / 1024.0
  171.                                              ELSE NULL
  172.                                         END) AS lastFullBackUpSize_MB ,
  173.                                     MAX(CASE WHEN bs.type = 'D'
  174.                                              THEN bs.compressed_backup_size
  175.                                                   / 1024.0 / 1024.0
  176.                                              ELSE NULL
  177.                                         END) AS lastFullBackUpCompressedSize_MB ,
  178.                                     MAX(CASE WHEN bs.type = 'I'
  179.                                              THEN bs.backup_start_date
  180.                                              ELSE NULL
  181.                                         END) AS lastDIFFBackUp ,
  182.                                     MAX(CASE WHEN bs.type = 'I'
  183.                                              THEN DATEDIFF(MINUTE,
  184.                                                            bs.backup_start_date,
  185.                                                            bs.backup_finish_date)
  186.                                              ELSE NULL
  187.                                         END) AS lastDIFFBackUp_DurationMinutes ,
  188.                                     MAX(CASE WHEN bs.type = 'I'
  189.                                              THEN bs.backup_size / 1024.0
  190.                                                   / 1024.0
  191.                                              ELSE NULL
  192.                                         END) AS lastDIFFBackUpSize_MB ,
  193.                                     MAX(CASE WHEN bs.type = 'I'
  194.                                              THEN bs.compressed_backup_size
  195.                                                   / 1024.0 / 1024.0
  196.                                              ELSE NULL
  197.                                         END) AS lastDIFFBackUpCompressedSize_MB ,
  198.                                     MAX(CASE WHEN bs.type = 'L'
  199.                                              THEN bs.backup_start_date
  200.                                              ELSE NULL
  201.                                         END) AS lastLogBackUp ,
  202.                                     MAX(CASE WHEN bs.type = 'L'
  203.                                              THEN DATEDIFF(MINUTE,
  204.                                                            bs.backup_start_date,
  205.                                                            bs.backup_finish_date)
  206.                                              ELSE NULL
  207.                                         END) AS lastLogBackUp_DurationMinutes ,
  208.                                     MAX(CASE WHEN bs.type = 'L'
  209.                                              THEN bs.backup_size / 1024.0
  210.                                                   / 1024.0
  211.                                              ELSE NULL
  212.                                         END) AS lastLogBackUpSize_MB ,
  213.                                     MAX(CASE WHEN bs.type = 'L'
  214.                                              THEN bs.compressed_backup_size
  215.                                                   / 1024.0 / 1024.0
  216.                                              ELSE NULL
  217.                                         END) AS lastLogBackUpCompressedSize_MB
  218.                           FROM      msdb.dbo.backupset bs
  219.                                     INNER JOIN ( SELECT MAX(lbs.backup_set_id) AS backup_set_id
  220.                                                  FROM   msdb.dbo.backupset lbs
  221.                                                  WHERE  lbs.type IN ( 'D', 'I',
  222.                                                               'L' )
  223.                                                  GROUP BY lbs.database_name ,
  224.                                                         lbs.type
  225.                                                ) AS latestBackup ON latestBackup.backup_set_id = bs.backup_set_id
  226.                           GROUP BY  bs.database_name
  227.                         ) AS backups ON backups.database_name = d.name
  228.         LEFT OUTER JOIN #DBCCRes t ON t.DBName = d.NAME
  229.         LEFT OUTER JOIN #DB_VLF l ON l.database_Name = d.name
  230. ORDER BY d.database_id ASC
  231.  
  232.  
  233.  
  234. DROP TABLE #DBCCRes
  235. DROP TABLE #DB_VLF

Con la ayuda de Juan francisco Vazquez y Jose Luis Rivera, probamos y adecuamos los queries para ejecutarse en SQL Server 2008 y 2005Esta es la versión para SQL 2008:

  1. IF OBJECT_ID('tempdb..#temp') IS NOT NULL
  2.     DROP TABLE #temp
  3. IF OBJECT_ID('tempdb..#tempLOG') IS NOT NULL
  4.     DROP TABLE #tempLOG
  5. IF OBJECT_ID('tempdb..#DB_VLF') IS NOT NULL
  6.     DROP TABLE #DB_VLF
  7. IF OBJECT_ID('tempdb..#DBCCRes') IS NOT NULL
  8.     DROP TABLE #DBCCRes
  9.  
  10.  
  11. CREATE TABLE #temp
  12.     (
  13.       Id INT IDENTITY(1, 1) ,
  14.       ParentObject VARCHAR(255) ,
  15.       [OBJECT] VARCHAR(255) ,
  16.       Field VARCHAR(255) ,
  17.       [VALUE] VARCHAR(255)
  18.     )
  19. CREATE TABLE #tempLOG
  20.     (
  21.       fieldId INT ,
  22.       FileSize BIGINT ,
  23.       StartOfset BIGINT ,
  24.       FSeqNo BIGINT ,
  25.       [STATUS] INT ,
  26.       parity INT ,
  27.       createLSN NUMERIC(25,0)
  28.     )
  29. CREATE TABLE #DB_VLF
  30.     (
  31.       database_name SYSNAME ,
  32.       qtyVlfs INT
  33.     )
  34.          
  35. CREATE TABLE #DBCCRes
  36.     (
  37.       Id INT IDENTITY(1, 1)
  38.              PRIMARY KEY CLUSTERED ,
  39.       DBName SYSNAME ,
  40.       dbccLastKnownGood DATETIME ,
  41.       RowNum INT
  42.     )
  43.  
  44. DECLARE @DBName SYSNAME ,
  45.     @SQL VARCHAR(512);
  46.  
  47. DECLARE dbccpage CURSOR LOCAL STATIC FORWARD_ONLY READ_ONLY
  48. FOR
  49.     SELECT  name
  50.     FROM    sys.databases
  51.     WHERE   1 = 1
  52.             AND STATE = 0
  53.         --And name NOT IN ('tempdb')
  54.     ;
  55.  
  56. OPEN dbccpage;
  57. FETCH NEXT FROM dbccpage INTO @DBName;
  58. WHILE @@FETCH_STATUS = 0
  59.     BEGIN
  60.         SET @SQL = ''
  61.         SET @SQL = 'Use [' + @DBName + '];' + CHAR(10) + CHAR(13)
  62.         SET @SQL = @SQL + 'DBCC Page ( [' + @DBName
  63.             + '],1,9,3) WITH TABLERESULTS;' + CHAR(10) + CHAR(13)
  64.  
  65.         INSERT  INTO #temp
  66.                 EXECUTE ( @SQL
  67.                        );
  68.         SET @SQL = 'Use [' + @DBName + '];' + CHAR(10) + CHAR(13)
  69.         SET @SQL = @SQL + 'DBCC LOGINFO ( ' + '''' + @DBName + ''''
  70.             + ') WITH TABLERESULTS;' + CHAR(10) + CHAR(13)
  71.  
  72.         INSERT  INTO #tempLOG
  73.                 EXECUTE ( @SQL
  74.                        );
  75.  
  76.  
  77.         INSERT  INTO #DBCCRes
  78.                 ( DBName ,
  79.                   dbccLastKnownGood ,
  80.                   RowNum
  81.                 )
  82.                 SELECT  @DBName ,
  83.                         VALUE ,
  84.                         ROW_NUMBER() OVER ( PARTITION BY Field ORDER BY VALUE ) AS Rownum
  85.                 FROM    #temp
  86.                 WHERE   Field = 'dbi_dbccLastKnownGood';
  87.         INSERT  INTO #DB_VLF
  88.                 ( database_name ,
  89.                   qtyVlfs
  90.                 )
  91.                 SELECT  @DBName ,
  92.                         COUNT(1)
  93.                 FROM    #tempLOG
  94.                        
  95.         TRUNCATE TABLE #temp;
  96.         TRUNCATE TABLE #tempLOG
  97.  
  98.         FETCH NEXT FROM dbccpage INTO @DBName;
  99.     END
  100. CLOSE dbccpage;
  101. DEALLOCATE dbccpage;
  102. DROP TABLE #temp
  103. DROP TABLE #tempLOG
  104.  
  105. DELETE  FROM #DBCCRes
  106. WHERE   RowNum <> 1
  107.  
  108. SELECT  d.name AS databaseName ,
  109.         CASE WHEN d.database_id < 5 THEN 'System Database '
  110.              WHEN name LIKE 'ReportServer%' THEN 'SSRS System Database'
  111.              ELSE 'User Database '
  112.         END AS DatabaseType ,
  113.         CASE WHEN d.compatibility_level = 120 THEN '2014'
  114.              WHEN d.compatibility_level = 110 THEN '2012'
  115.              WHEN d.compatibility_level = 100 THEN '2008'
  116.              WHEN d.compatibility_level = 90 THEN '2005'
  117.              WHEN d.compatibility_level = 80 THEN '2000'
  118.              ELSE 'unkow'
  119.         END AS DatabaseCompatibleMode ,
  120.         @@VERSION AS 'SQL Server Version' ,
  121.         t.dbccLastKnownGood AS lastRanCheckDB ,
  122.         SIZE.qtyDataFileGroups ,
  123.         SIZE.qtyDataFiles ,
  124.                 l.qtyVlfs AS qtyVLFs,
  125.         SIZE.sizeMBLog ,
  126.         SIZE.sizeMBData ,
  127.         d.user_access_desc ,
  128.         d.state_desc ,
  129.         d.snapshot_isolation_state ,
  130.         d.is_read_committed_snapshot_on ,
  131.         d.recovery_model_desc ,
  132.         d.page_verify_option_desc ,
  133.         d.is_broker_enabled ,
  134.         d.is_cdc_enabled ,
  135.         backups.*
  136. FROM    sys.databases d
  137.         LEFT OUTER JOIN ( SELECT    database_id ,
  138.                                     COUNT(DISTINCT CASE WHEN type_desc = 'LOG'
  139.                                                         THEN NULL
  140.                                                         ELSE data_space_id
  141.                                                    END) AS qtyDataFileGroups ,
  142.                                     COUNT(DISTINCT CASE WHEN type_desc = 'LOG'
  143.                                                         THEN NULL
  144.                                                         ELSE FILE_ID
  145.                                                    END) AS qtyDataFiles ,
  146.                                     SUM(CASE WHEN type_desc = 'LOG' THEN SIZE
  147.                                              ELSE 0
  148.                                         END) * 8.0 / 1024.0 AS sizeMBLog ,
  149.                                     SUM(CASE WHEN type_desc = 'LOG' THEN 0
  150.                                              ELSE SIZE
  151.                                         END) * 8.0 / 1024.0 AS sizeMBData
  152.                           FROM      sys.master_files
  153.                           GROUP BY  database_id
  154.                         ) AS SIZE ON SIZE.database_id = d.database_id
  155.         LEFT OUTER JOIN ( SELECT    database_name ,
  156.                                     MAX(CASE WHEN bs.type = 'D'
  157.                                              THEN bs.backup_start_date
  158.                                              ELSE NULL
  159.                                         END) AS lastFullBackUp ,
  160.                                     MAX(CASE WHEN bs.type = 'D'
  161.                                              THEN DATEDIFF(MINUTE,
  162.                                                            bs.backup_start_date,
  163.                                                            bs.backup_finish_date)
  164.                                              ELSE NULL
  165.                                         END) AS lastFullBackUp_DurationMinutes ,
  166.                                     MAX(CASE WHEN bs.type = 'D'
  167.                                              THEN bs.backup_size / 1024.0
  168.                                                   / 1024.0
  169.                                              ELSE NULL
  170.                                         END) AS lastFullBackUpSize_MB ,
  171.                                     MAX(CASE WHEN bs.type = 'D'
  172.                                              THEN bs.compressed_backup_size
  173.                                                   / 1024.0 / 1024.0
  174.                                              ELSE NULL
  175.                                         END) AS lastFullBackUpCompressedSize_MB ,
  176.                                     MAX(CASE WHEN bs.type = 'I'
  177.                                              THEN bs.backup_start_date
  178.                                              ELSE NULL
  179.                                         END) AS lastDIFFBackUp ,
  180.                                     MAX(CASE WHEN bs.type = 'I'
  181.                                              THEN DATEDIFF(MINUTE,
  182.                                                            bs.backup_start_date,
  183.                                                            bs.backup_finish_date)
  184.                                              ELSE NULL
  185.                                         END) AS lastDIFFBackUp_DurationMinutes ,
  186.                                     MAX(CASE WHEN bs.type = 'I'
  187.                                              THEN bs.backup_size / 1024.0
  188.                                                   / 1024.0
  189.                                              ELSE NULL
  190.                                         END) AS lastDIFFBackUpSize_MB ,
  191.                                     MAX(CASE WHEN bs.type = 'I'
  192.                                              THEN bs.compressed_backup_size
  193.                                                   / 1024.0 / 1024.0
  194.                                              ELSE NULL
  195.                                         END) AS lastDIFFBackUpCompressedSize_MB ,
  196.                                     MAX(CASE WHEN bs.type = 'L'
  197.                                              THEN bs.backup_start_date
  198.                                              ELSE NULL
  199.                                         END) AS lastLogBackUp ,
  200.                                     MAX(CASE WHEN bs.type = 'L'
  201.                                              THEN DATEDIFF(MINUTE,
  202.                                                            bs.backup_start_date,
  203.                                                            bs.backup_finish_date)
  204.                                              ELSE NULL
  205.                                         END) AS lastLogBackUp_DurationMinutes ,
  206.                                     MAX(CASE WHEN bs.type = 'L'
  207.                                              THEN bs.backup_size / 1024.0
  208.                                                   / 1024.0
  209.                                              ELSE NULL
  210.                                         END) AS lastLogBackUpSize_MB ,
  211.                                     MAX(CASE WHEN bs.type = 'L'
  212.                                              THEN bs.compressed_backup_size
  213.                                                   / 1024.0 / 1024.0
  214.                                              ELSE NULL
  215.                                         END) AS lastLogBackUpCompressedSize_MB
  216.                           FROM      msdb.dbo.backupset bs
  217.                                     INNER JOIN ( SELECT MAX(lbs.backup_set_id) AS backup_set_id
  218.                                                  FROM   msdb.dbo.backupset lbs
  219.                                                  WHERE  lbs.type IN ( 'D', 'I',
  220.                                                               'L' )
  221.                                                  GROUP BY lbs.database_name ,
  222.                                                         lbs.type
  223.                                                ) AS latestBackup ON latestBackup.backup_set_id = bs.backup_set_id
  224.                           GROUP BY  bs.database_name
  225.                         ) AS backups ON backups.database_name = d.name
  226.         LEFT OUTER JOIN #DBCCRes t ON t.DBName = d.NAME
  227.         LEFT OUTER JOIN #DB_VLF l ON l.database_Name = d.name
  228. ORDER BY d.database_id ASC
  229.  
  230.  
  231.  
  232. DROP TABLE #DBCCRes
  233. DROP TABLE #DB_VLF

 

Y da un resultado como con los siguientes campos:

  • databaseName
  • DatabaseType
  • DatabaseCompatibleMode
  • SQL Server Version
  • lastRanCheckDB
  • qtyDataFileGroups
  • qtyDataFiles
  • qtyVLFs
  • sizeMBLog
  • sizeMBData
  • user_access_desc
  • state_desc
  • snapshot_isolation_state
  • is_read_committed_snapshot_on
  • recovery_model_desc
  • page_verify_option_desc
  • is_broker_enabled
  • is_cdc_enabled
  • containment_desc
  • database_name
  • lastFullBackUp
  • lastFullBackUp_DurationMinutes
  • lastFullBackUpSize_MB
  • lastFullBackUpCompressedSize_MB
  • lastDIFFBackUp
  • lastDIFFBackUp_DurationMinutes
  • lastDIFFBackUpSize_MB
  • lastDIFFBackUpCompressedSize_MB
  • lastLogBackUp
  • lastLogBackUp_DurationMinutes
  • lastLogBackUpSize_MB
  • lastLogBackUpCompressedSize_MB
databaseName DatabaseType DatabaseCompatibleMode SQL Server Version lastRanCheckDB qtyDataFileGroups qtyDataFiles qtyVLFs sizeMBLog sizeMBData user_access_desc state_desc snapshot_isolation_state is_read_committed_snapshot_on recovery_model_desc page_verify_option_desc is_broker_enabled is_cdc_enabled containment_desc database_name lastFullBackUp lastFullBackUp_DurationMinutes lastFullBackUpSize_MB lastFullBackUpCompressedSize_MB lastDIFFBackUp lastDIFFBackUp_DurationMinutes lastDIFFBackUpSize_MB lastDIFFBackUpCompressedSize_MB lastLogBackUp lastLogBackUp_DurationMinutes lastLogBackUpSize_MB lastLogBackUpCompressedSize_MB
master System Database 2014 2014 1/1/1900 0:00 1 1 9 2.25 4 MULTI_USER ONLINE 1 0 SIMPLE CHECKSUM 0 0 NONE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
tempdb System Database 2014 2014 1/1/1900 0:00 1 1 3 0.5 8 MULTI_USER ONLINE 0 0 SIMPLE CHECKSUM 1 0 NONE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
model System Database 2014 2014 1/1/1900 0:00 1 1 2 0.5 2.1875 MULTI_USER ONLINE 0 0 FULL CHECKSUM 0 0 NONE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
msdb System Database 2014 2014 1/1/1900 0:00 1 1 3 0.75 14.125 MULTI_USER ONLINE 1 0 SIMPLE CHECKSUM 1 0 NONE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
DelayedDurability_test User Database 2014 2014 1/1/1900 0:00 1 1 20 100 100 MULTI_USER ONLINE 0 0 FULL CHECKSUM 1 0 NONE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SVL-Dev User Database 2008 2014 1/3/2013 7:13 1 1 2 99.6328125 1318.8125 MULTI_USER ONLINE 0 0 FULL TORN_PAGE_DETECTION 0 0 NONE SVL-Dev 8/14/2014 12:57 1 1229.073242 1229.073242 NULL NULL NULL NULL NULL NULL NULL NULL

 

Tags: