Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
L’utilitaire sqlmaint effectue un ensemble spécifié d’opérations de maintenance sur une ou plusieurs bases de données. Utilisez sqlmaint pour exécuter DBCC des vérifications, sauvegarder une base de données et son journal des transactions, mettre à jour les statistiques et reconstruire des index. Toutes les activités de maintenance de base de données génèrent un rapport que vous pouvez envoyer à un fichier texte désigné, un fichier HTML ou un compte de messagerie électronique.
sqlmaint exécute des plans de maintenance de base de données créés dans les versions précédentes de SQL Server. Pour exécuter des plans de maintenance de SQL Server à partir de l’invite de commandes, utilisez l’utilitaire dtexec.
Important
Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt la fonctionnalité de plan de maintenance SQL Server. Pour plus d’informations sur les plans de maintenance, consultez Plans de maintenance.
Syntaxe
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 ]
Les arguments
Séparez les paramètres et leurs valeurs par un espace. Par exemple, incluez un espace entre -S et server_name.
-?
Retourne le diagramme de syntaxe pour sqlmaint. Utilisez ce paramètre seul.
-S server_name[\instance_name]
Spécifie l’instance cible de SQL Server. Spécifiez <server_name> la connexion à l’instance par défaut du moteur de base de données SQL Server sur ce serveur. Spécifiez <server_name>\<instance_name> pour se connecter à une instance nommée du moteur de base de données sur ce serveur. Si vous ne spécifiez pas de serveur, sqlmaint se connecte à l’instance par défaut du moteur de base de données sur l’ordinateur local.
-U login_ID
Spécifie le compte à utiliser lors de la connexion au serveur. Si vous ne fournissez pas ce paramètre, sqlmaint tente d’utiliser l’authentification Windows. Si login_ID contient des caractères spéciaux, placez-le entre guillemets doubles (") ; sinon, les guillemets doubles sont facultatifs.
Important
Lorsque c'est possible, utilisez l'authentification Windows.
-P password
Spécifie le mot de passe du login_ID. Ce paramètre est valide uniquement si vous fournissez également le -U paramètre. Si le mot de passe contient des caractères spéciaux, placez-le entre guillemets doubles ; sinon, les guillemets doubles sont facultatifs.
Important
Le mot de passe n’est pas masqué. Lorsque c'est possible, utilisez l'authentification Windows.
-D database_name
Spécifie le nom de la base de données dans laquelle l'opération de maintenance doit être effectuée. Si database_name contient des caractères spéciaux, placez-le entre guillemets doubles ; sinon, les guillemets doubles sont facultatifs.
-NomPlan name
Spécifie le nom du plan de maintenance de base de données défini par l'Assistant de Plan de maintenance de base de données. Les seules informations que sqlmaint utilise à partir du plan sont la liste des bases de données du plan. Toutes les activités de maintenance spécifiées dans les autres paramètres de sqlmaint s’appliquent à cette liste de bases de données.
-PlanID guid
Spécifie l'identificateur global unique (GUID) d'un plan de maintenance de base de données à l'aide de l'Assistant Plan de maintenance de base de données. La seule information utilisée par sqlmaint est la liste des bases de données dans le plan. Toutes les activités de maintenance spécifiées dans les autres paramètres de sqlmaint s’appliquent à cette liste de bases de données. Cette valeur doit correspondre à une plan_id valeur dans msdb.dbo.sysdbmaintplans.
-Rpt text_file
Spécifie le chemin d’accès complet et le nom de fichier du rapport généré. Le rapport est aussi créé à l'écran. Le rapport conserve les informations de version en ajoutant une date au nom de fichier. La date est générée comme suit, à la fin du nom de fichier, mais avant la période, sous la forme _<yyyyMMddhhmm>.
<yyyy> = année, <MM> = mois, <dd> = jour, <hh> = heure, <mm> = minute.
Si vous exécutez l’utilitaire à 10:23, le 1er décembre 1996, avec la valeur text_file suivante :
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt
Le nom du fichier créé est :
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt
Le nom de fichier complet UNC (Universal Naming Convention) est requis pour text_file lorsque sqlmaint accède à un serveur distant.
-Pour operator_name
Spécifie l'opérateur auquel le rapport créé sera envoyé par l'intermédiaire de SQL Mail.
-HtmlRpt html_file
Spécifie le chemin d’accès complet et le nom du fichier dans lequel un rapport HTML est généré.
sqlmaint génère le nom du fichier en ajoutant une chaîne du format _<yyyyMMddhhmm> au nom de fichier, tout comme pour le -Rpt paramètre.
Le nom de fichier complet UNC est requis pour html_file lorsque sqlmaint accède à un serveur distant.
-DelHtmlRpt <time_period>
Supprime tout rapport HTML dans le répertoire du rapport si l’intervalle de temps après la création du fichier de rapport dépasse time_period.
-DelHtmlRpt recherche les fichiers dont le nom correspond au modèle généré à partir du paramètre html_file . Si html_file est C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, la -DelHtmlRptfonction sqlmaint supprime tous les fichiers dont les noms correspondent au modèle C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm et qui sont antérieurs à la time_period spécifiée.
-RmUnusedSpace threshold_percent free_percent
Spécifie que l’espace inutilisé est supprimé de la base de données spécifiée dans -D. Cette option est uniquement utile pour les bases de données dont la configuration prévoit une croissance automatique.
Threshold_percent indique, en Mo, la taille qu’une base de données doit atteindre pour que sqlmaint tente d’en supprimer l’espace de données inutilisé. Si la base de données est plus petite que threshold_percent, aucune action n’est exécutée.
Free_percent spécifie l’espace qui doit rester libre dans la base de données, exprimé sous la forme d’un pourcentage de la taille finale de celle-ci.
Prenons l’exemple d’une base de données de 200 Mo contenant 100 Mo de données. Si la valeur 10 est affectée à free_percent , la base de données a pour taille finale 110 Mo. Une base de données n’est pas développée si elle est inférieure à free_percent plus la quantité de données dans la base de données. Par exemple, si une base de données de 108 Mo a 100 Mo de données, en spécifiant 10 pour free_percent ne développe pas la base de données à 110 Mo ; il reste à 108 Mo.
-CkDB | -CkDBNoIdx
Spécifie qu’une instruction DBCC CHECKDB , ou une DBCC CHECKDB instruction avec l’option NOINDEX , s’exécute dans la base de données spécifiée dans -D.
sqlmaint écrit un avertissement dans text_file si la base de données est en cours d’utilisation lors de son exécution.
-CkAl | -CkAlNoIdx
Spécifie qu’une instruction DBCC CHECKALLOC avec l’option NOINDEX s’exécute dans la base de données spécifiée dans -D.
-CkCat
Spécifie qu’une instruction DBCC CHECKCATALOG s’exécute dans la base de données spécifiée dans -D.
-UpdOptiStats sample_percent
Spécifie que l’instruction suivante s’exécute sur chaque table de la base de données :
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Si les tables contiennent des colonnes calculées, vous devez également spécifier l’argument -SupportedComputedColumn lorsque vous utilisez -UpdOptiStats.
Pour plus d’informations, voir UPDATE STATISTICS.
-RebldIdx free_space
Spécifie que les index sur les tables de la base de données cible doivent être reconstruits sur base d’un pourcentage free_space inversement proportionnel au facteur de remplissage. Par exemple, si le pourcentage free_space est égal à 30, le facteur de remplissage utilisé est 70. Si une valeur de pourcentage free_space de 100 est spécifiée, les index sont reconstruits avec la valeur du facteur de remplissage d’origine.
Si les index se trouvent sur des colonnes calculées, vous devez également spécifier l’argument -SupportComputedColumn lorsque vous utilisez -RebldIdx.
-SoutienColonneCalculée
Doit être spécifié pour exécuter DBCC des commandes de maintenance avec sqlmaint sur des colonnes calculées.
-WriteHistory
Spécifie qu'une entrée est réalisée dans msdb.dbo.sysdbmaintplan_history pour chaque action de maintenance effectuée par sqlmaint. Si -PlanName ou -PlanID est spécifié, les entrées dans sysdbmaintplan_history utilisent l’ID du plan spécifié. Si -D est spécifié, les entrées à sysdbmaintplan_history sont enregistrées avec zéro pour l’ID du plan.
-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]
Spécifie une action de sauvegarde.
-BkUpDb sauvegarde l’intégralité de la base de données.
-BkUpLog sauvegarde uniquement le journal des transactions.
backup_path spécifie le répertoire pour la sauvegarde.
backup_path n’est pas nécessaire si -UseDefDir elle est également spécifiée et -UseDefDir remplace backup_path si les deux sont spécifiées. La sauvegarde peut être placée dans un répertoire ou une adresse d’appareil à bande (par exemple). \\.\TAPE0 Le nom de fichier pour la sauvegarde d'une base de données est créé automatiquement comme suit :
dbname_db_yyyyMMddhhmm.BAK
Where:
-
<dbname>est le nom de la base de données sauvegardée. -
<yyyyMMddhhmm>est l’heure de l’opération de sauvegarde avec<yyyy>= année,<MM>= mois,<dd>= jour,<hh>= heure et<mm>= minute.
Le nom de fichier d'une transaction de sauvegarde est automatiquement créé sous la forme suivante :
dbname_log_yyyymmddhhmm.BAK
Si vous utilisez le -BkUpDB paramètre, vous devez également spécifier le média à l’aide du -BkUpMedia paramètre.
-BkUpMedia
Spécifie le type de média de la sauvegarde, soit DISKTAPE.
DISK
Spécifie que le support de sauvegarde est un disque.
-DelBkUps <time_period>
Pour les sauvegardes de disque, spécifie que tout fichier de sauvegarde dans le répertoire de sauvegarde doit être supprimé si l’intervalle de temps après la création de la sauvegarde dépasse la time_period.
-CrBkSubDir
Pour les sauvegardes de disque, spécifie qu’un sous-répertoire doit être créé dans le répertoire backup_path ou dans le répertoire de sauvegarde par défaut s’il -UseDefDir est également spécifié. Le nom du sous-répertoire est généré à partir du nom de la base de données spécifié dans -D.
-CrBkSubDir offre un moyen simple de placer toutes les sauvegardes pour différentes bases de données dans des sous-répertoires distincts sans avoir à modifier le paramètre backup_path .
-UseDefDir
Pour les sauvegardes sur disque, spécifie que le fichier de sauvegarde doit être créé dans le répertoire de sauvegarde par défaut.
UseDefDir remplace backup_path si les deux sont spécifiés. Avec une configuration par défaut de SQL Server, le répertoire de sauvegarde par défaut est C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.
BANDE
Spécifie que le support de sauvegarde est une bande.
-BkUpOnlyIfClean
Spécifie que la sauvegarde se produit uniquement si les vérifications spécifiées -Ck ne trouvent pas de problèmes avec les données. Les actions de maintenance s'exécutent dans le même ordre que celui dans lequel elles apparaissent dans la ligne de commande. Spécifiez les paramètres -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl ou -CkCat avant les paramètres -BkUpDB ou -BkUpLog si vous allez également spécifier -BkUpOnlyIfClean. Si vous ne spécifiez pas ces paramètres, la sauvegarde se produit si la vérification signale des problèmes ou non.
-VrfyBackup
Spécifie que RESTORE VERIFYONLY est exécuté sur la sauvegarde une fois celle-ci terminée.
nombre [ minutes | heures| jour| semaines | mois ]
Spécifie l'intervalle de temps utilisé pour déterminer si un rapport ou un fichier de sauvegarde est suffisamment ancien pour être supprimé. number est un entier suivi (sans espace) d’une unité de temps. Exemples valides :
12weeks3months15days
Si vous spécifiez uniquement un nombre, la partie de date par défaut est weeks.
Remarques
L’utilitaire sqlmaint effectue des opérations de maintenance sur une ou plusieurs bases de données. Si vous spécifiez -D, l’utilitaire effectue les opérations spécifiées dans les commutateurs restants uniquement sur la base de données spécifiée. Si vous spécifiez -PlanName ou -PlanID, la seule information que sqlmaint récupère à partir du plan de maintenance spécifié est la liste des bases de données du plan. Toutes les opérations spécifiées dans les autres paramètres de sqlmaint s’appliquent à chaque base de données figurant sur la liste extraite du plan, L’utilitaire sqlmaint n’applique aucune des activités de maintenance définies dans le plan lui-même.
L’utilitaire sqlmaint retourne 0 en cas de réussite et 1 en cas d’échec. L’échec est signalé si :
L’une des actions de maintenance échoue.
Les vérifications
-CkDB,-CkDBNoIdx,-CkAl,-CkAlNoIdx,-CkTxtAl, ou-CkCatidentifient les problèmes liés aux données.Un échec général est rencontré.
Autorisations
Tout utilisateur Windows disposant d’une autorisation Lecture et Exécution peut sqlmaint.exe exécuter l’utilitaire sqlmaint . Par défaut, sqlmaint.exe est stocké dans le <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn dossier. En outre, la connexion SQL Server que vous spécifiez -login_ID doit disposer des autorisations SQL Server requises pour effectuer l’action spécifiée. Si vous utilisez l’authentification Windows pour vous connecter à SQL Server, la connexion SQL Server mappée à l’utilisateur Windows authentifié doit disposer des autorisations SQL Server requises pour effectuer l’action spécifiée.
Par exemple, l'utilisation de -BkUpDB nécessite l'autorisation pour exécuter l'instruction BACKUP. L’utilisation de l’argument -UpdOptiStats nécessite l’autorisation d’exécuter l’instruction UPDATE STATISTICS . Pour plus d’informations, consultez Autorisations (moteur de base de données).
Exemples
R. Effectuer des vérifications DBCC sur une base de données
Cet exemple exécute des vérifications DBCC sur une base de données.
sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
B. Mettre à jour les statistiques
Cet exemple met à jour les statistiques à l’aide d’un échantillon de 15 % dans toutes les bases de données d’un plan. Toute base de données qui atteint 110 Mo est réduite pour avoir seulement 10% espace libre.
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
Chapitre C. Sauvegarder toutes les bases de données
Cet exemple sauvegarde toutes les bases de données d’un plan dans leurs sous-répertoires individuels, à l’aide du répertoire par défaut <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup . Il supprime également toutes les sauvegardes antérieures à deux semaines.
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
D. Sauvegarder une base de données
Cet exemple sauvegarde une base de données unique dans le répertoire par défaut <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup .
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir