4

SQL Azure 데이터베이스에 배포 할 때 데이터 계층 응용 프로그램 (DACPAC) 업그레이드와 관련하여 질문이 있습니다. 마법사 UI를 통해 DACPAC를 수동으로 업그레이드 할 때 데이터 손실 경고 보고서를 검토하고 작업 보고서를 HTML 파일에 저장할 수있는 단계가 있습니다 ("업그레이드 계획 페이지 검토"here 참조). 작업 열에는 업그레이드를 수행하기 위해 실행되는 Transact-SQL 문과 같은 작업이 표시됩니다. 연관된 조치가 데이터를 삭제할 수있는 경우 데이터 손실 열에 경고가 포함됩니다.Powershell을 사용하여 SQL Azure로 배포 - 데이터 손실 경고 보고서를 생성 할 수 있습니까?

지금 당장은 아름답게 작동하는 Powershell을 사용하여 데이터베이스 업그레이드 프로세스를 자동화하고 있습니다. 불행히도 동일한 데이터 손실 경고 보고서을 생성하는 방법을 찾지 못했습니다.

GetDatabaseChanges()에 의해 생성 된 DatabaseChanges.txt 출력 파일이 정말 유익한
## Generate the database change list (database drift) and upgrade script and save them to file. 
$dacChanges = $dacStore.GetDatabaseChanges($dataTierAppNameToUpgrade) | Out-File -Filepath .\DatabaseChanges.txt 

## Getting the DAC incremental upgrade script for data-tier application 
$dacStore.GetIncrementalUpgradeScript($dataTierAppNameToUpgrade, $nextDacType) | Out-File -Filepath .\DatabaseUpgrade.sql 

하지 않았다, 그래서 같은 보고서 파일을 얻을 수있는 방법이 있다면 우리는 궁금 :

내 파워 쉘 업그레이드 스크립트의 발췌

은 다음과 같습니다 수동으로 업그레이드 마법사를 사용한다면 얻을 수있는 것입니다. 이 보고서는 데이터 마이그레이션 문제를 해결할 때 배포 팀에게 큰 도움이되었으며 실제 프로덕션 데이터베이스에 배포 할 때 수동으로 검사 할 수 있기를 바랍니다.

MSDN 문서를 검색했지만 운이 없었습니다. Powershell 배포에서이 기능이 지원되는지 알고있는 사람이 있습니까? 가까운 장래에 지원 될 계획입니까?

미리 도움을 주셔서 감사합니다.

답변

0

DAC @ Microsoft의 소유자와 연락을 취했으며 제안 된 솔루션은 다음과 같습니다. 관리되는 API를 사용하거나 SqlPackage.exe을 통해 가능합니다.

SqlPackage.exe에는 배포 보고서를 만들기위한 작업이 있습니다. 가능한 데이터 손실 문제가 감지되면 보고서에 포함됩니다.

참조 : 답장을 http://msdn.microsoft.com/en-us/library/hh550080(v=VS.103).aspx

1

http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.dac.dacupgradeoptions.aspx에 따르면 기본적으로 IgnoreDataLoss는 false입니다. 즉, 데이터 손실이 감지되면 업그레이드가 실패합니다. .NET에서 DacActionFinished 이벤트 (http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.dac.dacstore.dacactionfinished.aspx)를 처리 할 수 ​​있으며 업그레이드 작업이 완료되면 실행됩니다 . 문제가 발생하면 이벤트 arg의 Error 속성 (http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.dac.dacactioneventargs.error.aspx)에 자세한 예외가 포함됩니다. 원하는 html 보고서가 아닐 수도 있지만 여전히 정보를 제공합니다. PowerShell에서 CLR 이벤트를 처리 할 수 ​​있습니다. 샘플은 http://blogs.msdn.com/b/powershell/archive/2008/05/24/wpf-powershell-part-3-handling-events.aspx을 참조하십시오.

실제로, 문제는 SQL Azure에만 국한되지 않습니다. 태그를 SQL Server로 수정하여 더 많은 제안을 얻을 수도 있습니다.

최고 감사합니다,

명나라 쑤.

+0

감사 명나라 쑤!실제 업그레이드가 이루어지기 전에 해당 정보를 얻을 수 있다면 좋겠지 만 꽤 흥미 롭습니다. 이것은 여전히 ​​매우 유용하지만 우리는 이것을 확실히 조사 할 것입니다. 다시 한 번 감사드립니다! –