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.
Microsoft vous fournit un ensemble robuste de commandes de fichier de script pour exécuter et contrôler les activités Assistant Migration SQL Server (SSMA). Les sections suivantes les détaillent. L’application console utilise certaines commandes de fichier de script standard, comme indiqué dans cette section.
Commandes de fichier script de projet
Les commandes Projet gèrent la création de projets, l’ouverture, l’enregistrement et la sortie de projets.
Commande create-new-project
Crée un nouveau projet SSMA.
Scénario
project-folder. Indique le dossier du projet en cours de création.project-name. Indique le nom du projet. {string}overwrite-if-exists. Attribut facultatif. Indique si un projet existant doit être remplacé. {boolean}
Commande project-type
Attribut facultatif. Indique le type de projet, autrement dit, sql-server-2016, , sql-server-2017sql-server-2019, sql-server-2022, sql-server-2025ou sql-azure. La valeur par défaut est sql-server-2016.
Exemple de syntaxe
<create-new-project
project-folder="<project-folder>"
project-name="<project-name>"
overwrite-if-exists="<true/false>" (optional)
project-type="<sql-server-2016 | sql-server-2017 | sql-server-2019 | sql-server-2022 | sql-azure>" (optional)
/>
L’attribut overwrite-if-exists est false par défaut.
L’attribut project-type est sql-server-2016 par défaut.
Commande open-project
Ouvre un projet existant.
Scénario
project-folderindique le dossier du projet créé. La commande échoue si le dossier spécifié n’existe pas. {string}project-nameindique le nom du projet. La commande échoue si le projet spécifié n’existe pas. {string}
Exemple de syntaxe
<open-project
project-folder="<project-folder>"
project-name="<project-name>"
/>
L’application console SSMA pour Db2 prend en charge la compatibilité descendante. Vous pouvez ouvrir des projets créés par la version précédente de SSMA.
Commande save-project
Enregistre le projet de migration.
Exemple de syntaxe
<save-project/>
Commande close-project
Ferme le projet de migration.
Exemple de syntaxe
<close-project
if-modified="<save/error/ignore>" (optional)
/>
Commandes de fichier de script de connexion de base de données
Les commandes de connexion de base de données aident à se connecter à la base de données.
La fonctionnalité Parcourir de l’interface utilisateur n’est pas prise en charge dans la console.
Pour plus d’informations, consultez Créer des fichiers de script.
Commande connect-source-database
Effectue une connexion à la base de données source et charge les métadonnées de haut niveau de la base de données source, mais pas toutes les métadonnées.
Si la connexion à la source ne peut pas être établie, une erreur est générée et l’application console arrête l’exécution ultérieure
Scénario
La définition du serveur est récupérée à partir de l’attribut de nom défini pour chaque connexion, dans la section serveur du fichier de connexion du serveur ou du fichier de script.
Exemple de syntaxe
<connect-source-database server="<server-unique-name>"/>
force-load-source-database/force-load-target-database
Charge les métadonnées sources.
Utile pour travailler sur le projet de migration hors connexion.
Si la connexion à la source/cible ne peut pas être établie, une erreur est générée et l’application console arrête l’exécution ultérieure
Scénario
Nécessite un ou plusieurs nœuds de métabase comme paramètre de ligne de commande.
Exemple de syntaxe
<force-load object-name="<object-name>"
metabase="<source/target>"/>
Ou:
<force-load>
<metabase-object object-name="<object-name>"/>
</force-load>
reconnect-source-database
Se reconnecte à la base de données source, mais ne charge pas de métadonnées contrairement à la commande connect-source-database.
Si (re)connexion avec la source ne peut pas être établie, une erreur est générée et l’application console arrête l’exécution ultérieure.
Exemple de syntaxe
<reconnect-source-database server="<server-unique-name>"/>
connect-target-database
Se connecte à la base de données SQL Server cible et charge les métadonnées de haut niveau de la base de données cible, mais pas entièrement les métadonnées.
Si la connexion à la cible ne peut pas être établie, une erreur est générée et l’application console arrête l’exécution ultérieure.
Scénario
La définition erver est récupérée à partir de l’attribut de nom défini pour chaque connexion, dans la section serveur du fichier de connexion du serveur ou du fichier de script
Exemple de syntaxe
<connect-target-database server="<server-unique-name>"/>
reconnect-target-database
Se reconnecte à la base de données cible, mais ne charge pas de métadonnées, contrairement à la commande connect-target-database.
Si la (re)connexion à la cible ne peut pas être établie, une erreur est générée et l’application console arrête l’exécution ultérieure.
Exemple de syntaxe
<reconnect-target-database server="<server-unique-name>"/>
Commandes de fichier script de rapport
Les commandes Rapport génèrent des rapports sur les performances des différentes activités de la console SSMA.
generate-assessment-report
Génère des rapports d’évaluation sur la base de données source.
Si la connexion de base de données source n’est pas effectuée avant d’exécuter cette commande, une erreur est générée et l’application console se ferme.
L’échec de la connexion au serveur de base de données source pendant l’exécution de la commande entraîne également la fin de l’application console.
Scénario
conversion-report-folder: spécifie le dossier dans lequel le rapport d’évaluation peut être stocké. (Attribut facultatif)object-name: spécifie les objets pris en compte pour la génération de rapport d’évaluation (il peut avoir des noms d’objets individuels ou un nom d’objet de groupe).object-type: spécifie le type de l’objet spécifié dans l’attribut object-name (si la catégorie d’objet est spécifiée, le type d’objet estcategory).conversion-report-overwrite: spécifie s’il faut remplacer le dossier du rapport d’évaluation s’il existe déjà.Valeur par défaut : false. (Attribut facultatif)
write-summary-report-to: spécifie le chemin d’accès où le rapport récapitulatif est généré.Si seul le chemin d'accès du dossier est mentionné, le fichier par nom AssessmentReport<n>.XML est créé. (Attribut facultatif)
La création de rapports comporte deux sous-catégories supplémentaires :
-
report-errorstrueoufalse, avec la valeur par défaut commefalse(attributs facultatifs) -
verbosetrueoufalse, avec la valeur par défaut commefalse(attributs facultatifs)
-
Exemple de syntaxe
<generate-assessment-report
object-name="<object-name>"
object-type="<object-category>"
write-summary-report-to="<file>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
assessment-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
/>
Ou:
<generate-assessment-report
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
>
<metabase-object object-name="<object-name>"
object-type="<object-category>"/>
</generate-assessment-report>
Commandes de fichier script de migration
Les commandes de migration convertissent le schéma de la base de données cible en schéma source et migrent les données vers le serveur cible. Le paramètre de sortie de la console par défaut pour les commandes de migration est le rapport de sortie « Complet » sans rapport d’erreurs détaillé : résumé uniquement au niveau du nœud racine de l’arborescence d’objets source.
convert-schema
Effectue la conversion de schéma de la source vers le schéma cible.
Si la connexion de base de données source ou cible n’est pas effectuée avant d’exécuter cette commande, ou si la connexion au serveur de base de données source ou cible échoue pendant l’exécution de la commande, une erreur est générée et l’application console se ferme.
Scénario
conversion-report-folder: spécifie le dossier dans lequel le rapport d’évaluation peut être stocké. (Attribut facultatif)object-name: spécifie les objets sources pris en compte pour la conversion du schéma (il peut avoir des noms d’objets individuels ou un nom d’objet de groupe).object-type: spécifie le type de l’objet spécifié dans l’attribut object-name (si la catégorie d’objet est spécifiée, le type d’objet estcategory).conversion-report-overwrite: spécifie s’il faut remplacer le dossier du rapport d’évaluation s’il existe déjà.Valeur par défaut : false. (Attribut facultatif)
write-summary-report-to: spécifie le chemin d'accès où le rapport récapitulatif est généré.Si seul le chemin d'accès du dossier est mentionné, le fichier par nom SchemaConversionReport<n>.XML est créé. (Attribut facultatif)
La création de rapports comporte deux sous-catégories supplémentaires :
report-errorstrueoufalse, avec la valeur par défaut commefalse(attributs facultatifs)verbosetrueoufalse, avec la valeur par défaut commefalse(attributs facultatifs)
Exemple de syntaxe
<convert-schema
object-name="<object-name>"
object-type="<object-category>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
/>
Ou:
<convert-schema
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
<metabase-object object-name="<object-name>"
object-type="<object-category>"/>
</convert-schema>
Commande migrate-data
Migre les données sources vers la cible.
Scénario
conversion-report-folder: spécifie le dossier dans lequel le rapport d’évaluation peut être stocké. (Attribut facultatif)object-name: spécifie les objets sources pris en compte pour la migration de données (il peut avoir des noms d’objets individuels ou un nom d’objet de groupe).object-type: spécifie le type de l’objet spécifié dans l’attribut object-name (si la catégorie d’objet est spécifiée, le type d’objet estcategory).conversion-report-overwrite: spécifie s’il faut remplacer le dossier du rapport d’évaluation s’il existe déjà.Valeur par défaut : false. (Attribut facultatif)
write-summary-report-to: spécifie le chemin d’accès où le rapport récapitulatif est généré.Si seul le chemin du dossier est mentionné, le fichier par nom
DataMigrationReport<n>.xmlest créé. (Attribut facultatif)La création de rapports comporte deux sous-catégories supplémentaires :
-
report-errorstrueoufalse, avec la valeur par défaut commefalse(attributs facultatifs) -
verbosetrueoufalse, avec la valeur par défaut commefalse(attributs facultatifs)
-
Exemple de syntaxe
<migrate-data
write-summary-report-to="<file-name/folder-name>"
report-errors="<true/false>"
verbose="<true/false>">
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<data-migration-connection
source-use-last-used="true"/source-server="<server-unique-name>"
target-use-last-used="true"/target-server="<server-unique-name>"/>
</migrate-data>
Ou:
<migrate-data
object-name="<object-name>"
object-type="<object-category>"
write-summary-report-to="<file-name/folder-name>"
report-errors="<true/false>"
verbose="<true/false>"/>
Commandes de fichier de script de préparation de la migration
La commande Préparation de la migration lance le mappage de schéma entre les bases de données source et cible.
Commande map-schema
Mappage de schéma de la base de données source au schéma cible.
Commande source-schema
Spécifie le schéma source que nous prévoyons de migrer.
Commande sql-server-schema
Spécifie le schéma cible dans lequel nous voulons qu’il soit migré.
Exemple de syntaxe
<map-schema
source-schema="<source-schema>"
sql-server-schema="<target-schema>"/>
Commande map-schema
Mappage de schéma de la base de données source au schéma cible.
Scénario
source-schema spécifie le schéma source que nous avons l’intention de migrer.
sql-server-schema spécifie le schéma cible dans lequel nous voulons qu’il soit migré.
Exemple de syntaxe
<map-schema
source-schema="<source-schema>"
sql-server-schema="<target-schema>"/>
Commandes de fichier de script de facilité de gestion
Les commandes de facilité de gestion permettent de synchroniser les objets de base de données cibles avec la base de données source.
Le paramètre de sortie de la console par défaut pour les commandes de migration est le rapport de sortie « Complet » sans rapport d’erreurs détaillé : résumé uniquement au niveau du nœud racine de l’arborescence d’objets source.
Commande synchronize-target
Synchronise les objets cibles avec la base de données cible.
Si cette commande est exécutée sur la base de données source, une erreur est rencontrée.
Si la connexion de base de données cible n’est pas effectuée avant d’exécuter cette commande ou si la connexion au serveur de base de données cible échoue pendant l’exécution de la commande, une erreur est générée et l’application console se ferme.
Scénario
object-name: spécifie les objets cibles pris en compte pour la synchronisation avec la base de données cible (il peut avoir des noms d’objets individuels ou un nom d’objet de groupe).object-type: spécifie le type de l’objet spécifié dans l’attribut object-name (si la catégorie d’objet est spécifiée, le type d’objet estcategory).on-error: spécifie s’il faut spécifier des erreurs de synchronisation en tant qu’avertissements ou erreur. Options disponibles pour l’erreur :report-total-as-warningreport-each-as-warningfail-script
report-errors-to: spécifie l’emplacement du rapport d’erreur pour l’opération de synchronisation (attribut facultatif)Si seul le chemin d’accès au dossier est donné, le fichier par nom
TargetSynchronizationReport.xmlest créé.
Exemple de syntaxe
<synchronize-target
object-name="<object-name>"
on-error="<report-total-as-warning/
report-each-as-warning/
fail-script>" (optional)
report-errors-to="<file-name/folder-name>" (optional)
/>
Ou:
<synchronize-target
object-name="<object-name>"
object-type="<object-category>"/>
Ou:
<synchronize-target>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
</synchronize-target>
Commande refresh-from-database
Actualise les objets sources de la base de données.
Si cette commande est exécutée sur la base de données cible, une erreur est générée.
Scénario
Nécessite un ou plusieurs nœuds de métabase comme paramètre de ligne de commande.
object-name: spécifie les objets sources pris en compte pour l’actualisation à partir de la base de données source (il peut avoir des noms d’objets individuels ou un nom d’objet de groupe).object-type: spécifie le type de l’objet spécifié dans l’attribut object-name (si la catégorie d’objet est spécifiée, le type d’objet estcategory).on-error: spécifie s’il faut spécifier des erreurs d’actualisation en tant qu’avertissements ou erreur. Options disponibles pour l’erreur :report-total-as-warningreport-each-as-warningfail-script
report-errors-to: spécifie l’emplacement du rapport d’erreur pour l’opération de synchronisation (attribut facultatif)Si seul le chemin d’accès au dossier est donné, un fichier par le nom de celui-ci
SourceDBRefreshReport.xmlest créé.
Exemple de syntaxe
<refresh-from-database
object-name="<object-name>"
on-error="<report-total-as-warning/
report-each-as-warning/
fail-script>" (optional)
report-errors-to="<file-name/folder-name>" (optional)
/>
Ou:
<refresh-from-database
object-name="<object-name>"
object-type="<object-category>"/>
Ou:
<refresh-from-database>
<metabase-object object-name="<object-name>"/>
</refresh-from-database>
Commandes de fichier de script de génération de script de script
Les commandes génération de script effectuent des tâches doubles : elles permettent d’enregistrer la sortie de la console dans un fichier de script ; et enregistrez la sortie T-SQL dans la console ou un fichier en fonction du paramètre que vous spécifiez.
Commande save-as-script
Utilisé pour enregistrer les scripts des objets dans un fichier spécifié lorsque metabase=target. Il s’agit d’une alternative à la commande de synchronisation, dans laquelle nous obtenons les scripts et exécutons la même opération sur la base de données cible.
Scénario
Nécessite un ou plusieurs nœuds de métabase comme paramètre de ligne de commande.
object-name: spécifie les objets dont les scripts doivent être enregistrés. (Il peut avoir des noms d’objets individuels ou un nom d’objet de groupe)object-type: spécifie le type de l’objet spécifié dans l’attribut object-name (si la catégorie d’objet est spécifiée, le type d’objet estcategory).metabase: spécifie s’il s’agit de la métabase source ou cible.destination: spécifie le chemin d’accès ou le dossier dans lequel le script doit être enregistré, si le nom de fichier n’est pas donné, un nom de fichier au format (object_name valeur d’attribut).outoverwrite: s’iltruealors il remplace si le même nom de fichier existe. Elle peut avoir les valeurs (true/false).
Exemple de syntaxe
<save-as-script
metabase="<source/target>"
object-name="<object-name>"
object-type="<object-category>"
destination="<file/folder>"
overwrite="<true/false>" (optional)
/>
Ou:
<save-as-script
metabase="<source/target>"
destination="<file/folder>"
<metabase-object object-name="<object-name>"
object-type="<object-category>"/>
</save-as-script>
Commande convert-sql-statement
contextspécifie le nom du schéma.destinationspécifie si la sortie doit être stockée dans un fichier.Si cet attribut n’est pas spécifié, l’instruction T-SQL convertie s’affiche sur la console. (Attribut facultatif)
conversion-report-folderspécifie le dossier dans lequel le rapport d’évaluation peut être stocké. (Attribut facultatif)conversion-report-overwritespécifie s’il faut remplacer le dossier du rapport d’évaluation s’il existe déjà.Valeur par défaut : false. (Attribut facultatif)
write-converted-sql-tospécifie le chemin du dossier (ou) du fichier dans lequel le T-SQL converti doit être stocké. Lorsqu’un chemin d’accès au dossier est spécifié avec l’attributsql-files, chaque fichier source a un fichier T-SQL cible correspondant créé sous le dossier spécifié. Lorsqu’un chemin d’accès au dossier est spécifié avec l’attributsql, le T-SQL converti est écrit dans un fichier nomméResult.outsous le dossier spécifié.sqlspécifie les instructions SQL Db2 à convertir, une ou plusieurs instructions peuvent être séparées à l’aide d’un « ; »sql-filesspécifie le chemin des fichiers SQL qui doivent être convertis en code T-SQL.write-summary-report-tospécifie le chemin d’accès où le rapport est généré. Si seul le chemin du dossier est mentionné, le fichier par nomConvertSQLReport.xmlest créé. (Attribut facultatif)La création de rapports comporte deux sous-catégories supplémentaires :
-
report-errors:trueoufalse, avec la valeur par défaut commefalse(attributs facultatifs) -
verbose:trueoufalse, avec la valeur par défaut commefalse(attributs facultatifs)
-
Scénario
Nécessite un ou plusieurs nœuds de métabase comme paramètre de ligne de commande.
Exemple de syntaxe
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
destination="<stdout/file>" (optional)
file-name="<file-name>"
sql="SELECT 1 FROM DUAL;">
<output-window suppress-messages="<true/false>" />
</convert-sql-statement>
Ou:
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>"
destination="<stdout/file>" (optional)
write-converted-sql-to="<file-name/folder-name>"
sql-files="<folder-name>\*.sql" />
Ou:
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
sql-files="<folder-name>\*.sql" />
Exécuter la console SSMA en parallèle
L’utilitaire de console SSMA peut être exécuté en parallèle par le biais d’un script, en spécifiant le nom de la base de données et le chemin d’accès de dossier correspondant en tant que paramètres d’entrée. Dans l’exemple suivant, les bases de données SAMPLE1, SAMPLE2et SAMPLE3, avec leurs chemins de dossier respectifs, sont fournies comme entrée au script.
SAMPLE1,C:\folder path\SSMA Project1
SAMPLE2,C:\folder path\SSMA Project2
SAMPLE3,C:\folder path\SSMA Project3
L’exemple de script PowerShell suivant active l’exécution parallèle de la console SSMA.
$baseFolder = "C:\folder path\folder1"
$ssmaExe = "C:\folder path\SSMAforDb2Console.exe"
$databaselistPath = Join-Path $baseFolder "Databaselist.txt"
$conversionXmlTemplate = Join-Path $baseFolder "ConversionAndDataMigrationSample.xml"
$variableXmlTemplate = Join-Path $baseFolder "VariableValueFileSample.xml"
# Read all entries
$entries = Get-Content $databaselistPath | Where-Object { $_.Trim() -ne "" }
# Prepare the entries
$preparedEntries = foreach ($entry in $entries) {
$parts = $entry -split ","
$dbName = $parts[0].Trim()
$workingFolder = $parts[1].Trim()
if ($dbNameCounts.ContainsKey($dbName)) {
$dbNameCounts[$dbName]++
$suffix = "_{0:D2}" -f $dbNameCounts[$dbName]
$fileDbName = "$dbName$suffix"
}
else {
$dbNameCounts[$dbName] = 0
$fileDbName = $dbName
}
[PSCustomObject]@{
DbName = $dbName
WorkingFolder = $workingFolder
FileDbName = $fileDbName
}
}
# Run in parallel
$preparedEntries | ForEach-Object -Parallel {
$dbName = $_.DbName
$workingFolder = $_.WorkingFolder
$fileDbName = $_.FileDbName
# Update ConversionAndDataMigrationSample.xml
$convTree = [xml](Get-Content $using:conversionXmlTemplate)
$convTree.SelectNodes("//initial-catalog") | ForEach-Object { $_.SetAttribute("value", $dbName) }
$conversionXmlPath = Join-Path $using:baseFolder "ConversionAndDataMigrationSample_$fileDbName.xml"
$convTree.Save($conversionXmlPath)
# Update VariableValueFileSample.xml
$varTree = [xml](Get-Content $using:variableXmlTemplate)
$nodes = $varTree.SelectNodes('//variable[@name="$WorkingFolder$"]')
if ($nodes.Count -eq 0) {
Write-Host "No variable node found for `$WorkingFolder$"
}
else {
$nodes | ForEach-Object { $_.value = $workingFolder }
}
$nodes2 = $varTree.SelectNodes('//variable[@name="$Db2InitialCatalog$"]')
if ($nodes2.Count -eq 0) {
Write-Host "No variable node found for `$Db2InitialCatalog$"
}
else {
$nodes2 | ForEach-Object { $_.value = $dbName }
}
$variableXmlPath = Join-Path $using:baseFolder "VariableValueFileSample_$fileDbName.xml"
$varTree.Save($variableXmlPath)
# Prepare output/error file paths
$outputFile = Join-Path $using:baseFolder "ssma_output_$fileDbName.txt"
$errorFile = Join-Path $using:baseFolder "ssma_error_$fileDbName.txt"
# Prepare argument list
$arguments = "-s `"$conversionXmlPath`" -v `"$variableXmlPath`""
# Run SSMA console
Start-Process -FilePath $using:ssmaExe -ArgumentList $arguments -RedirectStandardOutput $outputFile -RedirectStandardError $errorFile -Wait
Write-Host "Executed command: `"$using:ssmaExe`" $arguments"
}