遅い答えですが、訪問者をスレッド化するのに役立つかもしれません
私は別のサーバー間でデータを分散しようとしている同様の課題を有しており、サードパーティ製のツールを使用して、それを解決した(差分は、スキーマの変更のためにとDataDiffデータの同期を変更)し、PowerShellのスクリプトは、プロセスを自動化するために必要な次のとおりです。
#check for the existence of the Outputs folder
function CheckAndCreateFolder($rootFolder, [switch]$Outputs)
{
$location = $rootFolder
#setting up location
if($Outputs -eq $true)
{
$location += "\Outputs"
}
#if the folder doesn't exist it will be created
if(-not (Test-Path $location))
{ mkdir $location -Force:$true -Confirm:$false | Out-Null }
return $location
}
#root folder for the schema sync process
$rootFolder = "SchemaSync"
#schema output summaries location
$outsLoc = CheckAndCreateFolder $rootFolder -Outputs
#ApexSQL Diff location, date stamp variable is defined, along with tool’s parameters
$diffLoc = "ApexSQLDiff"
$stamp = (Get-Date -Format "MMddyyyy_HHMMss")
$Params = "/pr:""MyProject.axds"" /out:""$outsLoc\SchemaOutput_$stamp.txt"" /sync /v /f"
$returnCode = $LASTEXITCODE
#initiate the schema comparison and synchronization process
(Invoke-Expression ("& `"" + $diffLoc +"`" " +$Params))
#write output to file
"$outsLoc\SchemaOutput_$dateStamp.txt"
#schema changes are detected
if($returnCode -eq 0)
{
"`r`n $returnCode - Schema changes were successfully synchronized" >>
}
else
{
#there are no schema changes
if($returnCode -eq 102)
{
"`r`n $returnCode - There are no schema changes. Job aborted" >>
}
#an error is encountered
else
{
"`r`n $returnCode - An error is encountered" >>
#output file is opened when an error is encountered
Invoke-Item "$outsLoc\SchemaOutput_$stamp.txt"
}
}
この方法では、2つのデータベース間の比較をスケジュールし、見つかった変更をリアルタイムで同期します。手順を追った説明を提供する記事は次のとおりです。
https://solutioncenter.apexsql.com/automatically-compare-and-synchronize-sql-server-data/
https://solutioncenter.apexsql.com/how-to-automatically-keep-two-sql-server-database- schemas-in-sync /