SSMS 2016 Azure SQL v12 bacpac 가져오기 오류: 암호가 없는 마스터 키는 지원되지 않습니다.
저는 이것을 수십 번 반복했지만 최근에 이 오류를 발견했습니다.다음은 제가 여기 오기 위해 거쳐온 단계입니다.
- 원본과 동일한 서버에 Azure SQL v12 데이터베이스의 복사본을 만듭니다.
- 복사 버전(사용자 상호 작용에서 완전히 비활성)을 BLOB 저장소로 내보냅니다.
- blob 저장소에서 로컬 드라이브로 .bacpac 파일을 다운로드합니다.
- SSMS(2016년 10월 출시) 로컬 SQL 서버 인스턴스에서 Databases를 마우스 오른쪽 버튼으로 클릭하고 'Import Data Tier Application'을 선택합니다.
- 최근에 다운로드한 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 지원팀에 문의한 결과 감사용 스토리지 자격 증명을 암호화하기 위해 빈 데이터베이스 마스터 키가 생성되었기 때문에 문제가 발생했다는 것을 알게 되었습니다(감사 설정은 선택 사항).
데이터베이스 감사 설정은 서버 설정에서 상속됩니다.
어쨌든, 그들이 생각해낸 작업은 다음과 같습니다.
- 서버(또는 데이터베이스)에서 감사를 사용하지 않습니다.
- 데이터베이스 마스터 키를 놓으십시오.
DROP MASTER KEY
네, 그렇습니다.
그러면 내보내기가 예상대로 작동합니다.Azure가 이 문제를 빨리 해결하여 감사와 내보내기가 함께 작동하기를 바랍니다.
2017년 3월 21일 업데이트 MS에서 더 나은 해결 방법을 제공합니다.
또한 수정 프로그램을 배포하는 데 시간이 좀 걸리기 때문에 이 문제를 방지하기 위해 추가 단계(감사 비활성화 또는 블로그 구성 단계)가 필요하지 않은 대체 솔루션을 제안했습니다.감사를 활성화한 후 마스터 키를 업데이트하고 암호를 설정하십시오.기존 마스터 키에 대한 암호를 설정하면 문제가 완화됩니다.또한 암호를 설정해도 감사에 영향을 미치지 않으며 계속 작동합니다.암호를 추가하는 구문은 다음과 같습니다.
-- execute in the user database
ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = ‘##############’;
또한 링크에는 PowerShell 스크립트가 있으며, 이 스크립트를 사용하여 문제를 일으키는 SQL 문을 제거할 수 있습니다..bacpac
파일.
이 문제를 해결할 수 있는 방법은 다음과 같습니다.
- 원본과 동일한 서버에 SQL Azure 데이터베이스의 복사본을 작성합니다.
해당 데이터베이스에서 다음 스크립트를 실행합니다.
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = [password here];
- 원래 게시물의 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 입니다.
'programing' 카테고리의 다른 글
VBA를 사용하여 셀 형식을 텍스트로 변경하려면 어떻게 해야 합니까? (0) | 2023.04.25 |
---|---|
Git 푸시 오류 '[원격 거부] 마스터 -> 마스터 (지점은 현재 체크아웃되었습니다)' (0) | 2023.04.25 |
Git - 치명적입니다.'/path/my_project/.git/index.lock'을(를) 생성할 수 없습니다.파일이 있습니다. (0) | 2023.04.25 |
비동기 프로그래밍 및 Azure 함수입니다. (0) | 2023.04.25 |
"ObjectContext 인스턴스가 삭제되어 연결이 필요한 작업에 더 이상 사용할 수 없습니다" 문제 해결: InvalidOperation예외. (0) | 2023.04.20 |