Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Firma Microsoft udostępnia niezawodny zestaw poleceń pliku skryptu do wykonywania i kontrolowania działań programu SQL Server Migration Assistant (SSMA). W poniższych sekcjach szczegółowo opisano to samo. Aplikacja konsolowa używa pewnych standardowych poleceń pliku skryptu, które są wyliczane w tej sekcji.
Polecenia pliku skryptu projektu
Polecenia programu Project obsługują tworzenie projektów, otwieranie, zapisywanie i kończenie projektów.
create-new-project polecenie
Tworzy nowy projekt SSMA.
Skrypt
project-folder. Wskazuje folder tworzonego projektu.project-name. Wskazuje nazwę projektu. {string}overwrite-if-exists. Atrybut opcjonalny. Wskazuje, czy istniejący projekt powinien zostać zastąpiony. {wartość logiczna}
project-type polecenie
Atrybut opcjonalny. Wskazuje typ projektu, czyli sql-server-2016, , sql-server-2017sql-server-2019, , sql-server-2022, sql-server-2025lub sql-azure. Wartość domyślna to sql-server-2016.
Przykładowa składnia
<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)
/>
Atrybut overwrite-if-exists jest domyślnie false.
Atrybut project-type jest domyślnie sql-server-2016.
open-project polecenie
Otwiera istniejący projekt.
Skrypt
project-folderwskazuje folder tworzonego projektu. Polecenie kończy się niepowodzeniem, jeśli określony folder nie istnieje. {string}project-namewskazuje nazwę projektu. Polecenie kończy się niepowodzeniem, jeśli określony projekt nie istnieje. {string}
Przykładowa składnia
<open-project
project-folder="<project-folder>"
project-name="<project-name>"
/>
Aplikacja konsolowa SSMA dla Db2 obsługuje kompatybilność wsteczną. Możesz otwierać projekty utworzone przez poprzednią wersję programu SSMA.
save-project polecenie
Zapisuje projekt migracji.
Przykładowa składnia
<save-project/>
close-project polecenie
Zamyka projekt migracji.
Przykładowa składnia
<close-project
if-modified="<save/error/ignore>" (optional)
/>
Polecenia pliku skryptu połączenia bazy danych
Polecenia połączenia z bazą danych ułatwiają nawiązywanie połączenia z bazą danych.
Funkcja interfejsu użytkownika Przeglądaj nie jest obsługiwana w konsoli.
Aby uzyskać więcej informacji, zobacz Create script files (Tworzenie plików skryptów).
connect-source-database polecenie
Wykonuje połączenie ze źródłową bazą danych i ładuje metadane wysokiego poziomu źródłowej bazy danych, ale nie wszystkie metadane.
Jeśli nie można ustanowić połączenia ze źródłem, zostanie wygenerowany błąd, a aplikacja konsolowa przestanie wykonywać dalsze operacje
Skrypt
Definicja serwera jest pobierana z atrybutu name zdefiniowanego dla każdego połączenia w sekcji serwerowej pliku połączenia lub pliku skryptu.
Przykładowa składnia
<connect-source-database server="<server-unique-name>"/>
force-load-source-database/force-load-target-database
Ładuje metadane źródłowe.
Przydatne do pracy nad projektem migracji w trybie offline.
Jeśli nie można ustanowić połączenia ze źródłem/obiektem docelowym, zostanie wygenerowany błąd, a aplikacja konsolowa przestanie wykonywać dalsze operacje
Skrypt
Wymaga jednego lub kilku węzłów metabazy jako parametru wiersza polecenia.
Przykładowa składnia
<force-load object-name="<object-name>"
metabase="<source/target>"/>
Lub:
<force-load>
<metabase-object object-name="<object-name>"/>
</force-load>
reconnect-source-database
Ponownie nawiązuje połączenie ze źródłową bazą danych, ale nie ładuje żadnych metadanych w przeciwieństwie do polecenia connect-source-database.
Jeśli nie można ustanowić połączenia lub ponownego połączenia ze źródłem, zostanie wygenerowany błąd, a aplikacja konsolowa zatrzyma dalsze działanie.
Przykładowa składnia
<reconnect-source-database server="<server-unique-name>"/>
connect-target-database
Nawiązuje połączenie z docelową bazą danych SQL Server i ładuje metadane wysokiego poziomu docelowej bazy danych, ale nie w całości.
Jeśli nie można ustanowić połączenia z obiektem docelowym, zostanie wygenerowany błąd, a aplikacja konsolowa przestanie wykonywać dalsze operacje.
Skrypt
Definicja serwera jest pobierana z atrybutu nazwy zdefiniowanego dla każdego połączenia w sekcji serwera pliku połączeń serwera lub w pliku skryptu.
Przykładowa składnia
<connect-target-database server="<server-unique-name>"/>
reconnect-target-database
Ponownie nawiązuje połączenie z docelową bazą danych, ale nie ładuje żadnych metadanych, w przeciwieństwie do polecenia connect-target-database.
Jeśli (re)połączenie z obiektem docelowym nie może zostać nawiązane, zostanie wygenerowany błąd, a aplikacja konsolowa przestanie wykonywać dalsze operacje.
Przykładowa składnia
<reconnect-target-database server="<server-unique-name>"/>
Polecenia pliku skryptu raportu
Polecenia Raport generują raporty dotyczące wydajności różnych działań konsoli SSMA.
generate-assessment-report
Generuje raporty oceny w źródłowej bazie danych.
Jeśli połączenie źródłowej bazy danych nie zostanie wykonane przed wykonaniem tego polecenia, zostanie wygenerowany błąd i aplikacja konsolowa zakończy działanie.
Niepowodzenie nawiązywania połączenia z źródłowym serwerem bazy danych podczas wykonywania polecenia powoduje również zakończenie aplikacji konsolowej.
Skrypt
conversion-report-folder: określa folder, w którym można przechowywać raport oceny. (opcjonalny atrybut)object-name: Określa obiekty rozważane na potrzeby generowania raportu oceny (może mieć nazwy poszczególnych obiektów lub nazwę obiektu grupy).object-type: określa typ obiektu określonego w atrybucie object-name (jeśli określono kategorię obiektu, typ obiektu tocategory).conversion-report-overwrite: określa, czy zastąpić folder raportu oceny, jeśli już istnieje.wartość domyślna: false. (opcjonalny atrybut)
write-summary-report-to: określa ścieżkę, w której jest generowany raport podsumowania.Jeśli zostanie wymieniona tylko ścieżka folderu, zostanie utworzony plik według nazwy AssessmentReport<n>.XML. (opcjonalny atrybut)
Tworzenie raportu ma dwie kolejne podkategorie:
-
report-errorstruelubfalsez wartością domyślnąfalse(atrybuty opcjonalne) -
verbosetruelubfalsez wartością domyślnąfalse(atrybuty opcjonalne)
-
Przykładowa składnia
<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)
/>
Lub:
<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>
Polecenia w pliku skryptu migracji
Polecenia migracji konwertują docelowy schemat bazy danych na schemat źródłowy i migrują dane na serwer docelowy. Domyślne ustawienie danych wyjściowych konsoli dla poleceń migracji to "Pełny" raport wyjściowy bez szczegółowego raportowania błędów: podsumowanie tylko w węźle głównym drzewa obiektów źródłowych.
convert-schema
Wykonuje konwersję schematu ze źródła na schemat docelowy.
Jeśli połączenie źródłowej lub docelowej bazy danych nie jest wykonywane przed wykonaniem tego polecenia, lub połączenie ze źródłowym lub docelowym serwerem bazy danych kończy się niepowodzeniem podczas wykonywania polecenia, zostanie wygenerowany błąd i aplikacja konsolowa zakończy działanie.
Skrypt
conversion-report-folder: określa folder, w którym można przechowywać raport oceny. (opcjonalny atrybut)object-name: Określa obiekty źródłowe rozważane do konwersji schematu (może mieć nazwy poszczególnych obiektów lub nazwę obiektu grupy).object-type: określa typ obiektu określonego w atrybucie object-name (jeśli określono kategorię obiektu, typ obiektu tocategory).conversion-report-overwrite: określa, czy zastąpić folder raportu oceny, jeśli już istnieje.wartość domyślna: false. (opcjonalny atrybut)
write-summary-report-to: określa ścieżkę, w której jest generowany raport podsumowania.Jeśli zostanie wymieniona tylko ścieżka folderu, zostanie utworzony plik według nazwy SchemaConversionReport<n>.XML. (opcjonalny atrybut)
Tworzenie raportu ma dwie kolejne podkategorie:
report-errorstruelubfalsez wartością domyślnąfalse(atrybuty opcjonalne)verbosetruelubfalsez wartością domyślnąfalse(atrybuty opcjonalne)
Przykładowa składnia
<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)
/>
Lub:
<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>
migrate-data polecenie
Migruje dane źródłowe do obiektu docelowego.
Skrypt
conversion-report-folder: określa folder, w którym można przechowywać raport oceny. (opcjonalny atrybut)object-name: Określa obiekty źródłowe rozważane do migrowania danych (mogą mieć nazwy poszczególnych obiektów lub nazwę obiektu grupy).object-type: określa typ obiektu określonego w atrybucie object-name (jeśli określono kategorię obiektu, typ obiektu tocategory).conversion-report-overwrite: określa, czy zastąpić folder raportu oceny, jeśli już istnieje.wartość domyślna: false. (opcjonalny atrybut)
write-summary-report-to: określa ścieżkę, w której jest generowany raport podsumowania.Jeśli zostanie wymieniona tylko ścieżka folderu, zostanie utworzony plik według nazwy
DataMigrationReport<n>.xml. (opcjonalny atrybut)Tworzenie raportu ma dwie kolejne podkategorie:
-
report-errorstruelubfalsez wartością domyślnąfalse(atrybuty opcjonalne) -
verbosetruelubfalsez wartością domyślnąfalse(atrybuty opcjonalne)
-
Przykładowa składnia
<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>
Lub:
<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>"/>
Polecenia pliku skryptu przygotowania migracji
Polecenie Przygotowanie migracji inicjuje mapowanie schematu między źródłowymi i docelowymi bazami danych.
map-schema polecenie
Mapowanie schematu źródłowej bazy danych na schemat docelowy.
source-schema polecenie
Określa schemat źródłowy, który zamierzamy migrować.
sql-server-schema polecenie
Określa schemat docelowy, w którym ma zostać zmigrowany.
Przykładowa składnia
<map-schema
source-schema="<source-schema>"
sql-server-schema="<target-schema>"/>
map-schema polecenie
Mapowanie schematu źródłowej bazy danych na schemat docelowy.
Skrypt
source-schema określa schemat źródłowy, który zamierzamy migrować.
sql-server-schema określa schemat docelowy, w którym ma zostać zmigrowany.
Przykładowa składnia
<map-schema
source-schema="<source-schema>"
sql-server-schema="<target-schema>"/>
Polecenia skryptu zarządzania plikami
Polecenia zarządzania ułatwiają synchronizowanie obiektów docelowej bazy danych ze źródłową bazą danych.
Domyślne ustawienie danych wyjściowych konsoli dla poleceń migracji to "Pełny" raport wyjściowy bez szczegółowego raportowania błędów: podsumowanie tylko w węźle głównym drzewa obiektów źródłowych.
synchronize-target polecenie
Synchronizuje obiekty docelowe z docelową bazą danych.
Jeśli to polecenie jest wykonywane względem źródłowej bazy danych, wystąpi błąd.
Jeśli docelowe połączenie z bazą danych nie jest wykonywane przed wykonaniem tego polecenia lub połączenie z docelowym serwerem bazy danych zakończy się niepowodzeniem podczas wykonywania polecenia, zostanie wygenerowany błąd i aplikacja konsolowa zakończy działanie.
Skrypt
object-name: Określa obiekty docelowe rozważane do synchronizacji z docelową bazą danych (może mieć nazwy poszczególnych obiektów lub nazwę obiektu grupy).object-type: określa typ obiektu określonego w atrybucie object-name (jeśli określono kategorię obiektu, typ obiektu tocategory).on-error: określa, czy należy określić błędy synchronizacji jako ostrzeżenia lub błąd. Dostępne opcje w przypadku błędu:report-total-as-warningreport-each-as-warningfail-script
report-errors-to: określa lokalizację raportu o błędach dla operacji synchronizacji (opcjonalny atrybut)Jeśli podano tylko ścieżkę folderu, zostanie utworzony plik według nazwy
TargetSynchronizationReport.xml.
Przykładowa składnia
<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)
/>
Lub:
<synchronize-target
object-name="<object-name>"
object-type="<object-category>"/>
Lub:
<synchronize-target>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
</synchronize-target>
refresh-from-database polecenie
Odświeża obiekty źródłowe z bazy danych.
Jeśli to polecenie jest wykonywane względem docelowej bazy danych, zostanie wygenerowany błąd.
Skrypt
Wymaga jednego lub kilku węzłów metabazy jako parametru wiersza polecenia.
object-name: Określa obiekty źródłowe rozważane do odświeżania z źródłowej bazy danych (może mieć nazwy poszczególnych obiektów lub nazwę obiektu grupy).object-type: określa typ obiektu określonego w atrybucie object-name (jeśli określono kategorię obiektu, typ obiektu tocategory).on-error: określa, czy należy określić błędy odświeżania jako ostrzeżenia lub błąd. Dostępne opcje w przypadku błędu:report-total-as-warningreport-each-as-warningfail-script
report-errors-to: określa lokalizację raportu o błędach dla operacji synchronizacji (opcjonalny atrybut)Jeśli zostanie podana tylko ścieżka folderu, zostanie utworzony plik o nazwie
SourceDBRefreshReport.xml.
Przykładowa składnia
<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)
/>
Lub:
<refresh-from-database
object-name="<object-name>"
object-type="<object-category>"/>
Lub:
<refresh-from-database>
<metabase-object object-name="<object-name>"/>
</refresh-from-database>
Polecenia pliku do generowania skryptu
Polecenia generowania skryptów wykonują zadania podwójne: które pomagają zapisywać dane wyjściowe konsoli w pliku skryptu, oraz zapisują dane wyjściowe języka T-SQL w konsoli lub w pliku według określonego parametru.
save-as-script polecenie
Służy do zapisywania skryptów obiektów do pliku wymienionego podczas metabase=target. Jest to alternatywa dla polecenia synchronizacji, w którym otrzymujemy skrypty i wykonujemy to samo w docelowej bazie danych.
Skrypt
Wymaga jednego lub kilku węzłów metabazy jako parametru wiersza polecenia.
object-name: określa obiekty, których skrypty mają zostać zapisane. (Może mieć nazwy poszczególnych obiektów lub nazwę obiektu grupy)object-type: określa typ obiektu określonego w atrybucie object-name (jeśli określono kategorię obiektu, typ obiektu tocategory).metabase: określa, czy jest to metabaza źródłowa, czy docelowa.destination: Określa ścieżkę lub folder, w którym należy zapisać skrypt; jeśli nazwa pliku nie została podana, zostanie użyta nazwa pliku w formacie (nazwa_obiektu wartość atrybutu).outoverwrite: jeśli istnieje plik o tej samej nazwie, nadpisuje go. Może mieć wartości (prawda/fałsz).
Przykładowa składnia
<save-as-script
metabase="<source/target>"
object-name="<object-name>"
object-type="<object-category>"
destination="<file/folder>"
overwrite="<true/false>" (optional)
/>
Lub:
<save-as-script
metabase="<source/target>"
destination="<file/folder>"
<metabase-object object-name="<object-name>"
object-type="<object-category>"/>
</save-as-script>
convert-sql-statement polecenie
contextokreśla nazwę schematu.destinationokreśla, czy dane wyjściowe powinny być przechowywane w pliku.Jeśli ten atrybut nie zostanie określony, w konsoli zostanie wyświetlona przekonwertowana instrukcja T-SQL. (opcjonalny atrybut)
conversion-report-folderokreśla folder, w którym można przechowywać raport oceny. (opcjonalny atrybut)conversion-report-overwriteokreśla, czy zastąpić folder raportu oceny, jeśli już istnieje.wartość domyślna: false. (opcjonalny atrybut)
write-converted-sql-tookreśla ścieżkę pliku (lub) folderu, w którym ma być przechowywany przekonwertowany język T-SQL. Po określeniu ścieżki folderu wraz z atrybutemsql-fileskażdy plik źródłowy ma odpowiedni docelowy plik T-SQL utworzony w określonym folderze. Po określeniu ścieżki folderu wraz z atrybutemsqlprzekonwertowany język T-SQL jest zapisywany w pliku o nazwieResult.outw określonym folderze.sqlokreśla instrukcje DB2 SQL do przekonwertowania, co najmniej jedna instrukcja może być oddzielona za pomocą ";"sql-filesokreśla ścieżkę plików SQL, które muszą zostać przekonwertowane na kod T-SQL.write-summary-report-tookreśla ścieżkę, w której jest generowany raport. Jeśli zostanie wymieniona tylko ścieżka folderu, zostanie utworzony plik według nazwyConvertSQLReport.xml. (opcjonalny atrybut)Tworzenie raportu ma dwie kolejne podkategorie:
-
report-errors:truelubfalsez wartością domyślnąfalse(atrybuty opcjonalne) -
verbose:truelubfalsez wartością domyślnąfalse(atrybuty opcjonalne)
-
Skrypt
Wymaga jednego lub kilku węzłów metabazy jako parametru wiersza polecenia.
Przykładowa składnia
<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>
Lub:
<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" />
Lub:
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
sql-files="<folder-name>\*.sql" />
Uruchom konsolę SSMA równolegle
Narzędzie konsoli SSMA można wykonać równolegle za pomocą skryptów, określając nazwę bazy danych i odpowiednią ścieżkę folderu jako parametry wejściowe. W poniższym przykładzie bazy danych SAMPLE1, SAMPLE2i SAMPLE3, z odpowiednimi ścieżkami folderów są dostarczane jako dane wejściowe skryptu.
SAMPLE1,C:\folder path\SSMA Project1
SAMPLE2,C:\folder path\SSMA Project2
SAMPLE3,C:\folder path\SSMA Project3
Poniższy przykładowy skrypt programu PowerShell umożliwia równoległe wykonywanie konsoli 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"
}