none
MSSQLServer - Ritardo partenza Piano di manutenzione RRS feed

  • Domanda

  • Buongiorno a tutti.

    Su una istanza con un solo DB piuttosto grande (circa 1 TB) avviene una cosa insolita:

    Ho configurato un piano di manutenzione quotidiano schedulato per partire quotidianamente alle 21.00.
    All'interno del piano, considerata la dimensione del DB e i tempi di esecuzione verificati, ho inserito unicamente la riorganizzazione degli indici. Il piano viene eseguito ogni sera e termina con successo.

    La "particolarità" , e ragione di questo post, è che a differenza di molti altri piani configurati analogamente su altri server,  ogni volta questo paino parte con un ritardo "random" rispetto alla schedulazione.

    Di seguito l'ultimo Log: 
    ______________________________________

    Status: Succeeded.

    Details:

    Task start: 2021-02-19T22:35:23.

    Task end: 2021-02-20T04:34:12.

    Success

    _____________________________________

    Nel SQLServer Agent monitor, risulta correttamente schedulato per le 21 ma il primo segno di Log inizia alle 22.35 (in questo caso) . 

    Sapresti darmi una motivazione ?? Durando molto tempo vorrei poter contare , come sempre, su partenze opportune negli orari stabiliti.

    Grazie anticipatamente a tutti.


    Hunternet

    lunedì 22 febbraio 2021 13:37

Tutte le risposte

  • Aggiornamento: Indagando meglio il Log esteso , trovo che il Job parte all'orario corretto ma passano molti minuti prima di iniziare la ricostruzione indici per questa "query" che riporto in neretto e che non mi spiego:

    Executed as user: NT Service\SQLSERVERAGENT. ...20 for 64-bit  Copyright (C) 2017 Microsoft. All rights reserved.    Started:  21:00:01  Progress: 2021-02-19 21:00:01.77     Source: {947BBC64-6368-4429-AAEA-43D064FF6E3C}      Executing query "DECLARE @Guid UNIQUEIDENTIFIER      EXECUTE msdb..sp...".: 100% complete  End Progress  Progress: 2021-02-19 22:35:23.45

    Sapresti darmi un parere al riguardo ? 

    grazie.


    Hunternet

    lunedì 22 febbraio 2021 14:26
  • Ciao,

    dal pezzetto di log che riporti si vede una attività preliminare di sistema (exec msdb..sp...) dalla durata rilevante; non ho elementi per dire se è conseguenza di una vostra configurazione o se sia intrinseca al piano di maintenance.

    Informazioni più analitiche le puoi raccogliere profilando l'esecuzione del job oppure controllando i report standard del msdb, come ad esempio  "object execution statistics".

    Giorgio

    lunedì 22 febbraio 2021 15:12
  • Grazie molte Giorgio. Ho attivato il "Log Esteso" per la prossima esecuzione del Job in modo da trovarmi le esecuzioni complete . Aggiorno il post appena ho il risultato. 

    Grazie ancora.


    Hunternet

    lunedì 22 febbraio 2021 15:20
  • Il Log esteso non produce molte informazioni al riguardo.
    Riporto un estrapolazione dell'inizio, il seguito riguarda tutti gli altri indici senza maggiori informazioni al riguardo: 

    _________________________________________________________________

    Microsoft(R) Server Maintenance Utility (Unicode) Version 14.0.3356
    Report was generated on "XXX".
    Maintenance Plan: XXXX
    Duration: 10:37:31
    Status: Succeeded.
    Details:

    Reorganize index on Local server connection
    Databases: DBXXXX
    Object: Tables and views
    Compact large objects
    Task start: 2021-02-22T23:01:58.
    Task end: 2021-02-23T07:07:33.
    Success
    Command:use [XXXX]
    GO
    use [master]
    GO
    USE [DBXXXX]
    GO
    ALTER INDEX [IndexXXX....

    _________________________________________________________________

    Nel job History verifico nuovamente la partenza all'ora corretta del Job ma con la precedente esecuzione di una SP sicuramente di sistema (da msdb) e sicuramente "by default" perchè non richiesta da me esplicitamente (faccio solo una rebuild index task).

    Sono sempre più convinto che la tempistica dipenda dalla dimensione del DB.

    Che ne pensate ? 

    gGrazie ancora.


    Hunternet

    martedì 23 febbraio 2021 14:42
  • Aggiungo che dal report standard di MSDB non ho raccolto dati rilevanti al riguardo.

    Hunternet

    martedì 23 febbraio 2021 14:44
  • Ciao,

    se non vi sono valori anomali nel report si può pensare ad un problema di attesa a causa di lock; potresti verificare  che nei primi minuti di run non v ene siano p.es. con la procedura di sistema sp_who, colonna "blk".

    O anche potresti forzare il pacchetto di maintenance a non utilizzare il livello transazione di default che è Serializable: impost p.es. read uncommitted:


    G.


    • Modificato gnic mercoledì 24 febbraio 2021 07:21
    mercoledì 24 febbraio 2021 05:27
  • Questo è un ottimo suggerimento.

    Con questa impostazione non terrebbe conto dei lock ? 

    grazie ancora.


    Hunternet

    mercoledì 24 febbraio 2021 10:32
  • L'utente di esecuzione , che avvia il SQLServer Agent, è lo standard Locale: NT Service\SQLSERVERAGENT

    grazie.


    Hunternet

    mercoledì 24 febbraio 2021 12:14