Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Utilità sqlmaint

L'utilitàsqlmaint consente di eseguire un set specifico di operazioni di manutenzione su uno o più database. Utilizzare l'utilità sqlmaint per eseguire controlli DBCC, il backup di un database e del relativo log delle transazioni, aggiornare statistiche e ricompilare indici. Tutte le attività di manutenzione dei database generano un report che può essere inviato a un file di testo, un file HTML o un account di posta elettronica specificato. sqlmaint esegue i piani di manutenzione dei database creati con le versioni precedenti di SQL Server. Per eseguire i piani di manutenzione di SQL Server dal prompt dei comandi, utilizzare l'utilità Utilità dtexec.

Nota importante Importante

Questa funzionalità verrà rimossa a partire dalla prossima versione di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare invece la funzionalità di pianificazione della manutenzione di SQL Server. Per ulteriori informazioni sui piani di manutenzione, vedere Piani di manutenzione.

sqlmaint 
[-?] |
[
     [-S server_name[\instance_name]]
     [-U login_ID [-P password]]
     {
          [-D database_name | -PlanName name | -PlanID guid ]
          [-Rpt text_file]
          [-To operator_name]
          [-HtmlRpt html_file [-DelHtmlRpt <time_period>] ]
          [-RmUnusedSpace threshold_percentfree_percent]
          [-CkDB | -CkDBNoIdx]
          [-CkAl | -CkAlNoIdx]
          [-CkCat]
          [-UpdOptiStats sample_percent]
          [-RebldIdx free_space]
          [-SupportComputedColumn]
          [-WriteHistory]
          [
               {-BkUpDB [backup_path] | -BkUpLog [backup_path] }
               {-BkUpMedia
                    {DISK [
                           [-DelBkUps <time_period>] 
                           [-CrBkSubDir ] 
                           [-UseDefDir ] 
                          ]
                     | TAPE 
                    }
               }
               [-BkUpOnlyIfClean]
               [-VrfyBackup]
          ]
     }
]
<time_period> ::=
number[minutes | hours | days | weeks | months]

Separare i parametri e i relativi valori con uno spazio. Inserire ad esempio uno spazio tra -S e server_name.

-?

Visualizza il diagramma della sintassi di sqlmaint. Questo parametro deve essere utilizzato da solo.

-S server_name[ \instance_name]

Specifica l'istanza di destinazione di Microsoft SQL Server. Per connettersi all'istanza predefinita del Motore di database di SQL Server, specificare server_name. Per connettersi all'istanza denominata di Motore di database di un determinato server, specificare server_name\instance_name. Se non si specifica alcun server, sqlmaint si connette all'istanza predefinita del Motore di database del computer locale.

-U login_ID

Specifica l'ID di accesso utilizzato per la connessione al server. Se omesso, sqlmaint tenta di utilizzare l'autenticazione di Microsoft Windows. Se login_ID contiene caratteri speciali, il valore deve essere racchiuso tra virgolette doppie ("). In caso contrario, le virgolette doppie sono facoltative.

Nota sulla sicurezza Nota sulla protezione

Se possibile, utilizzare l'autenticazione di Windows.

-P password

Specifica la password per l'ID di accesso. È valido solo se viene indicato anche il parametro -U. Se password contiene caratteri speciali, il valore deve essere racchiuso tra virgolette doppie. In caso contrario, le virgolette doppie sono facoltative.

Nota sulla sicurezza Nota sulla protezione

La password non è nascosta. Se possibile, utilizzare l'autenticazione di Windows.

-D database_name

Specifica il nome del database nel quale eseguire l'operazione di manutenzione. Se database_name contiene caratteri speciali, il valore deve essere racchiuso tra virgolette doppie. In caso contrario, le virgolette doppie sono facoltative.

-PlanName name

Specifica il nome di un piano di manutenzione del database definito utilizzando Creazione guidata piano di manutenzione database. L'unica informazione del piano utilizzata da sqlmaint è rappresentata dall'elenco dei database. Le attività di manutenzione specificate negli altri parametri di sqlmaint vengono applicate a questo elenco di database.

-PlanID guid

Specifica l'identificatore univoco globale (GUID, Globally Unique Identifier) del piano di manutenzione del database definito utilizzando Creazione guidata piano di manutenzione database. L'unica informazione del piano utilizzata da sqlmaint è rappresentata dall'elenco dei database. Le attività di manutenzione specificate negli altri parametri di sqlmaint vengono applicate a questo elenco di database. Il valore deve corrispondere a quello di plan_id in msdb.dbo.sysdbmaintplans.

-Rpt text_file

Specifica il percorso completo e il nome del file in cui deve essere generato il report. Il report viene visualizzato anche sullo schermo. Il report gestisce informazioni sulla versione tramite l'aggiunta di una data al nome del file. La data viene inserita alla fine del nome del file e prima del punto nel formato _yyyyMMddhhmm. yyyy = anno, MM = mese, dd = giorno, hh = ore, mm = minuti.

Se si esegue l'utilità alle 10.23 del 1° dicembre 1996 e il valore di text_file è:

c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint.rpt

il nome del file generato è:

c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint_199612011023.rpt

Per l'accesso a un server remoto tramite sqlmaint, è necessario specificare il nome UNC (Universal Naming Convention) completo del file per text_file.

-To operator_name

Specifica l'operatore al quale il report generato viene inviato tramite SQL Mail.

-HtmlRpt html_file

Specifica il percorso completo e il nome del file in cui generare il report HTML. sqlmaint aggiunge al nome del file una stringa nel formato _yyyyMMddhhmm, in modo analogo a quanto avviene per il parametro -Rpt.

Per l'accesso a un server remoto tramite sqlmaint, è necessario specificare il nome UNC completo del file per html_file .

-DelHtmlRpt <time_period>

Specifica che è necessario eliminare dalla directory dei report ogni report HTML con data di creazione anteriore all'intervallo di tempo definito da <time_period>. -DelHtmlRpt esegue la ricerca dei file con nome corrispondente al modello generato dal parametro html_file. Se html_file è c:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint.htm, -DelHtmlRpt fa sì che sqlmaint elimini i file con nome corrispondente al modello C:\Program Files\Microsoft SQL Server\Mssql\Backup\AdventureWorks2012_maint*.htm e precedenti al valore di <time_period> specificato.

-RmUnusedSpace threshold_percent free_percent

Specifica la rimozione dello spazio inutilizzato dal database indicato con il parametro -D. Questa opzione è utile solo nel caso di database per i quali è stato impostato l'aumento automatico delle dimensioni. Threshold_percent specifica le dimensioni, in megabyte, che il database deve raggiungere prima che sqlmaint rimuova lo spazio inutilizzato. Se le dimensioni del database sono inferiori a threshold_percent, non viene eseguita alcuna azione. Free_percent specifica la quantità di spazio inutilizzato che deve rimanere nel database, in termini di percentuale delle dimensioni finali. Se ad esempio un database di 200 MB contiene 100 MB di dati e per free_percent si specifica 10, le dimensioni finali del database saranno di 110 MB. Si noti che le dimensioni del database non verranno aumentate se sono inferiori a free_percent più la quantità di dati del database. Se ad esempio un database di 108 MB contiene 100 MB di dati e per free_percent si specifica 10, il database non verrà esteso a 110 MB, ma rimarrà di 108 MB.

-CkDB | -CkDBNoIdx

Specifica l'esecuzione di un'istruzione DBCC CHECKDB o DBCC CHECKDB con l'opzione NOINDEX nel database indicato con il parametro -D. Per ulteriori informazioni, vedere DBCC CHECKDB.

Se durante l'esecuzione di sqlmaint il database è in uso, viene scritto un avviso in text_file.

-CkAl | -CkAlNoIdx

Specifica l'esecuzione di un'istruzione DBCC CHECKALLOC con l'opzione NOINDEX nel database indicato con il parametro -D. Per ulteriori informazioni, vedere DBCC CHECKALLOC (Transact-SQL).

-CkCat

Specifica che un'istruzione DBCC CHECKCATALOG (Transact-SQL) deve essere eseguita nel database indicato in -D. Per ulteriori informazioni, vedere DBCC CHECKCATALOG (Transact-SQL).

-UpdOptiStats sample_percent

Specifica l'esecuzione dell'istruzione seguente in tutte le tabelle del database:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;

Se le tabelle contengono colonne calcolate e si utilizza -UpdOptiStats, è inoltre necessario specificare l'argomento -SupportedComputedColumn.

Per ulteriori informazioni, vedere UPDATE STATISTICS (Transact-SQL).

-RebldIdx free_space

Specifica la ricostruzione degli indici delle tabelle del database di destinazione utilizzando il valore percentuale di free_space come valore inverso del fattore di riempimento. Ad esempio, se la percentuale di free_space è 30, verrà utilizzato un fattore di riempimento pari a 70. Se si specifica un valore percentuale di free_space pari a 100, gli indici vengono ricompilati con il valore del fattore di riempimento originale.

Se gli indici contengono colonne calcolate e si utilizza -RebldIdx, è inoltre necessario specificare l'argomento -SupportComputedColumn.

-SupportComputedColumn

Specificare questo argomento per eseguire i comandi di manutenzione DBCC sulle colonne calcolate utilizzando sqlmaint.

-WriteHistory

Specifica l'aggiunta di una voce in msdb.dbo.sysdbmaintplan_history per ogni azione di manutenzione eseguita da sqlmaint. Se si specifica -PlanName o -PlanID, per le voci di sysdbmaintplan_history viene utilizzato l'ID del piano specificato. Se si specifica -D, l'ID del piano delle voci di sysdbmaintplan_history viene rappresentato da zeri.

-BkUpDB [ backup_path] | -BkUpLog [ backup_path ]

Specifica un'azione di backup. -BkUpDb esegue il backup di tutto il database. -BkUpLog esegue solo il backup del log delle transazioni.

backup_path specifica la directory di backup. backup_path non è necessario se si specifica -UseDefDir e, se vengono specificati entrambi, -UseDefDir è prioritario. È possibile memorizzare il backup in una directory o utilizzare l'indirizzo di un dispositivo nastro, ad esempio \\. \TAPE0). Il nome del file per il backup di un database viene generato automaticamente nel formato seguente:

dbname_db_yyyyMMddhhmm.BAK

dove

  • dbname è il nome del database del quale eseguire il backup.

  • yyyyMMddhhmm rappresenta la data e l'ora dell'operazione di backup, dove yyyy = anno, MM = mese, dd = giorno, hh = ore e mm = minuti.

Il nome del file per il backup del log delle transazioni viene generato automaticamente nel formato seguente:

dbname_log_yyyymmddhhmm.BAK

Se si utilizza il parametro -BkUpDB è inoltre necessario specificare il supporto con il parametro -BkUpMedia.

-BkUpMedia

Specifica il tipo di supporto per il backup, ovvero DISK o TAPE.

DISK

Indica che il supporto di backup è un disco.

-DelBkUps< time_period >

Per i backup su disco, specifica che è necessario eliminare dalla directory di backup ogni file di backup con data di creazione anteriore all'intervallo di tempo definito da <time_period>.

-CrBkSubDir

Per i backup su disco, specifica la creazione di una sottodirectory nella directory [backup_path] o nella directory di backup predefinita, se si utilizza anche -UseDefDir . Il nome della sottodirectory viene generato in base al nome del database specificato in -D. -CrBkSubDir consente di memorizzare in modo semplice tutti i backup di database diversi in sottodirectory separate senza dover modificare il parametro backup_path.

-UseDefDir

Per i backup su disco, specifica la creazione del file di backup nella directory di backup predefinita. UseDefDir ha la precedenza su backup_path, se sono specificati entrambi. Nel caso di un'installazione predefinita di Microsoft SQL Server, la directory di backup predefinita è C:\Programmi\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.

TAPE

Indica che il supporto di backup è un nastro.

-BkUpOnlyIfClean

Specifica che il backup viene eseguito solo se i controlli -Ck specificati non riscontrano problemi nei dati. Le azioni di manutenzione vengono eseguite nella stessa sequenza in cui sono indicate nel prompt dei comandi. Se si prevede di utilizzare il parametro -BkUpOnlyIfClean, specificare i parametri -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl o -CkCat prima dei parametri -BkUpDB/-BkUpLog. In caso contrario, il backup viene eseguito indipendentemente da eventuali problemi riscontrati durante i controlli.

-VrfyBackup

Specifica l'esecuzione dell'istruzione RESTORE VERIFYONLY al termine del backup.

number[minutes| hours| day| weeks| months]

Specifica l'intervallo di tempo trascorso il quale un report o un file di backup può essere eliminato. number è un numero intero seguito (senza spazi) da un'unità di tempo, ad esempio:

  • 12weeks

  • 3months

  • 15days

Se si specifica solo number, l'unità di tempo predefinita è weeks.

L'utilità sqlmaint consente di eseguire operazioni di manutenzione su uno o più database. Se si specifica un valore per il parametro -D, le operazioni indicate nelle altre opzioni vengono eseguite solo nel database specificato. Se si specifica -PlanName o -PlanID, sqlmaint recupera dal piano di manutenzione solo l'elenco dei database. Tutte le operazioni specificate negli altri parametri di sqlmaint vengono eseguite in tutti i database dell'elenco ottenuto dal piano. L'utilità sqlmaint di per sé non esegue nessuna delle attività di manutenzione definite nel piano.

Se l'esecuzione ha esito positivo, l'utilità sqlmaint restituisce 0, in caso contrario 1. L'esito negativo viene segnalato se:

  • Una delle azioni di manutenzione ha esito negativo.

  • Un controllo -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl o -CkCat riscontra problemi nei dati.

  • Si verifica un errore generale.

L'utilità sqlmaint può essere eseguita da qualsiasi utente di Windows che disponga dell'autorizzazione Lettura/esecuzione su sqlmaint.exe, archiviato nella cartella x:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER1\MSSQL\Binn per impostazione predefinita. L'account di accesso di SQL Server specificato tramite -login_ID deve inoltre disporre delle autorizzazioni SQL Server necessarie per eseguire l'operazione specificata. Se la connessione a SQL Server utilizza l'autenticazione di Windows, l'account di accesso di SQL Server sul quale viene eseguito il mapping all'utente di Windows autenticato deve disporre delle autorizzazioni SQL Server necessarie per eseguire l'operazione specificata.

Ad esempio, per utilizzare -BkUpDB è necessaria l'autorizzazione a eseguire l'istruzione BACKUP, mentre l'utilizzo dell'argomento -UpdOptiStats richiede l'autorizzazione a eseguire l'istruzione UPDATE STATISTICS. Per ulteriori informazioni, vedere le sezioni dedicate alle autorizzazioni nei relativi argomenti della documentazione online.

A.Esecuzione di controlli DBCC in un database

sqlmaint -S MyServer -D AdventureWorks2012 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt

B.Aggiornamento delle statistiche utilizzando un campione del 15% per tutti i database di un pianoe compattazione dei database che hanno raggiunto dimensioni di 110 MB in modo che lo spazio libero sia pari al 10%

sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10

C.Backup di tutti i database di un piano nelle singole sottodirectory della directory predefinita x:\Programmi\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup directory.ed eliminazione delle copie di backup risalenti a più di due settimane prima.

sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks

D.Backup di un database nella directory predefinita x:\Programmi\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup directory.\

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft