programing

SSMS 2016 Azure SQL v12 bacpac 가져오기 오류: 암호가 없는 마스터 키는 지원되지 않습니다.

testmans 2023. 4. 25. 22:01
반응형

SSMS 2016 Azure SQL v12 bacpac 가져오기 오류: 암호가 없는 마스터 키는 지원되지 않습니다.

저는 이것을 수십 번 반복했지만 최근에 이 오류를 발견했습니다.다음은 제가 여기 오기 위해 거쳐온 단계입니다.

  1. 원본과 동일한 서버에 Azure SQL v12 데이터베이스의 복사본을 만듭니다.
  2. 복사 버전(사용자 상호 작용에서 완전히 비활성)을 BLOB 저장소로 내보냅니다.
  3. blob 저장소에서 로컬 드라이브로 .bacpac 파일을 다운로드합니다.
  4. SSMS(2016년 10월 출시) 로컬 SQL 서버 인스턴스에서 Databases를 마우스 오른쪽 버튼으로 클릭하고 'Import Data Tier Application'을 선택합니다.
  5. 최근에 다운로드한 bacpac 파일을 선택하고 가져오기를 시작합니다.

폭발하는 데 몇 초밖에 걸리지 않으며 다음과 같은 오류가 발생합니다.

Error SQL72014: .Net SqlClient Data Provider: Msg 33161, Level 15, State 1, Line 1 Database master keys without password are not supported in this version of SQL Server
Error SQL72045: Script execution error. The executed script: CREATE MASTER KEY;

1개월 반 전에 같은 데이터베이스에 대해 같은 과정을 밟았는데요 모든 게 잘 작동했어요또 다른 사람이 이런 경험을 하고 있나요?SSDT 버전 14.0.61021.0을 설치했는데, 이 버전이 중요한지 잘 모르겠습니다.SQL Server 2016 Developer Edition(v13.0.1722.0)도 실행하고 있습니다.

저도 같은 문제가 있었어요.Azure 지원팀에 문의한 결과 감사용 스토리지 자격 증명을 암호화하기 위해 빈 데이터베이스 마스터 키가 생성되었기 때문에 문제가 발생했다는 것을 알게 되었습니다(감사 설정은 선택 사항).

데이터베이스 감사 설정은 서버 설정에서 상속됩니다.

어쨌든, 그들이 생각해낸 작업은 다음과 같습니다.

  1. 서버(또는 데이터베이스)에서 감사를 사용하지 않습니다.
  2. 데이터베이스 마스터 키를 놓으십시오.DROP MASTER KEY네, 그렇습니다.

그러면 내보내기가 예상대로 작동합니다.Azure가 이 문제를 빨리 해결하여 감사와 내보내기가 함께 작동하기를 바랍니다.

2017년 3월 21일 업데이트 MS에서 나은 해결 방법을 제공합니다.

또한 수정 프로그램을 배포하는 데 시간이 좀 걸리기 때문에 이 문제를 방지하기 위해 추가 단계(감사 비활성화 또는 블로그 구성 단계)가 필요하지 않은 대체 솔루션을 제안했습니다.감사를 활성화한 후 마스터 키를 업데이트하고 암호를 설정하십시오.기존 마스터 키에 대한 암호를 설정하면 문제가 완화됩니다.또한 암호를 설정해도 감사에 영향을 미치지 않으며 계속 작동합니다.암호를 추가하는 구문은 다음과 같습니다.

-- execute in the user database
ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = ‘##############’;

또한 링크에는 PowerShell 스크립트가 있으며, 이 스크립트를 사용하여 문제를 일으키는 SQL 문을 제거할 수 있습니다..bacpac파일.

이 문제를 해결할 수 있는 방법은 다음과 같습니다.

  1. 원본과 동일한 서버에 SQL Azure 데이터베이스의 복사본을 작성합니다.
  2. 해당 데이터베이스에서 다음 스크립트를 실행합니다.

    ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = [password here];
    
  3. 원래 게시물의 2-5단계를 따릅니다.

Azure SQL 데이터베이스를 생성하면 암호 없이 데이터베이스 마스터 키(DMK)가 생성되고 SQL Server 2016에서는 이 문제가 발생하지 않습니다.이게 다른 사람에게 도움이 됐으면 좋겠네요

참고: 원본 데이터베이스의 데이터만 로컬 개발 복사본을 새로 고치고 싶었기 때문에 이 작업을 수행할 수 있었습니다. 이에 대한 영향을 완전히 조사하지는 않았습니다.

다음을 수행해야 합니다.

  • 마스터 키 개체를 bacpac에서 제거합니다.
  • bacpac에서 자격 증명 개체를 제거합니다.

Microsoft 블로그에 게시된 스크립트가 있으며 이를 실행하면 위의 모든 작업을 수행할 수 있습니다.

C:\PS> .\RemoveMasterKey.ps1  -bacpacPath "C:\BacPacs\Test.bacpac

마스터 키를 제거하여 생성된 손상된 bacpac을 수정합니다.

RemoveMasterKey 스크립트를 실행하라는 제안도 여러 위치에 있는 model.xml 파일에 the를 삽입하여 손상된 bacpac 파일을 생성했습니다.

파일의 압축을 푼 다음 model.xml 파일에서 문제 문자를 제거한 다음 Origin.xml 파일의 새 체크섬을 생성하여 bacpac을 편집할 수 있습니다.

.bacpac 확장자로 파일을 백업하면 백팩을 가져올 수 있습니다.

수정은 http://inworksllc.com/editing-sql-database-azure-bacpac-files/에서 찾을 수 있습니다.

체크섬 생성기: https://github.com/gertd/dac/tree/master/drop/debug입니다.

제공된 단계는 다음과 같습니다.

1) zip 파일을 수정된 model.xml로 업데이트합니다.

2) zip 파일의 이름을 bacpac 확장자로 바꿉니다.

3) dacchksum.exe /i:데이터베이스를 실행합니다.bacpac(데이터베이스).bacpac은 bacpac 파일 이름입니다.)

4) bacpac 파일의 Origin.xml을 dacchksum에서 제공하는 새 값으로 업데이트합니다.실행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/40575610/ssms-2016-error-importing-azure-sql-v12-bacpac-master-keys-without-password-not 입니다.

반응형