늦은 답변이지만 방문자를 스레드하는 것이 도움이 될 수 있습니다
다른 서버에 데이터를 배포하려고 시도하는 비슷한 과제가 있었고 타사 도구 ( 스키마 변경에 대한 Diff 및 데이터 변경 동기화에 대한 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"
}
}
이 방법은 두 데이터베이스 간의 비교를 예약하고 발견 된 변경 사항을 실시간으로 동기화합니다. 다음은 단계별 지침을 제공하는 기사입니다.
https://solutioncenter.apexsql.com/automatically-compare-and-synchronize-sql-server-data/
https://solutioncenter.apexsql.com/how-to-automatically-keep-two-sql-server-database- 동기화 된 스키마 /