2012-03-20 4 views
0

두 개의 SQL Server가 있는데 둘 중 하나에서 백업을 수행 한 다음 다른 서버에서 복원하고 싶습니다. 데이터베이스를 복원 할 서버에 데이터베이스가 이미 있으며 복원 할 서버의 보안 설정을 유지하려고합니다.다른 서버에서 데이터베이스를 복원 할 때 보안 설정을 유지하는 방법

또 다른 문제는 PowerShell에서이 모든 작업을 수행하고자하므로 GUI 작업이 필요하지 않습니다.

또는이 문제에 대한 잘못된 해결책 일 수 있습니다. 백업/복원을 수행하지 않고 보안 설정을 유지하지 않고도 데이터를 이동할 수있는 또 다른 방법이 있습니까?

+0

"보안 설정"이란 무엇입니까? 로그인, 사용자, 역할, 개체 권한? 그리고 어떤 버전의 SQL Server를 사용하고 있습니까? – Pondlife

+0

개인적으로 다른 서버에서 DB를 복원 한 후 저장된 proc을 사용하여 보안을 설정합니다. 당신은 posh로 스크립트를 실행할 수 있습니다. 복원 후 저장 실행은 성공했습니다. –

+0

@Pondlife 예. 로그인, 사용자 및 역할은 두 서버에서 다릅니다 (다른 서비스 계정 등). 두 서버 모두에서 Microsoft SQL Server 2008 R2 Enterprise를 사용하고 있습니다. –

답변

0

제 환경에서는 데이터베이스를 복원하고 보안 및 데이터베이스 개체 차이를 유지하기 위해 Red Gate Compare Professional과 함께 Powershell 스크립트를 사용합니다. 과정은 매우 간단합니다.

  1. 대상 데이터베이스의 Red Gate 스냅 샷을 만듭니다. 레드 게이트 명령 줄 도구 사용. 생성되는 파일은 매우 작으며 사용자, 사용 권한 및 개체 만 포함됩니다 (기본적으로 데이터 제외).
  2. T-SQL을 사용하여 대상 데이터베이스를 통해 원본 데이터베이스 복원
  3. 명령 줄 레드 게이트 도구를 사용하여 거의 복원 된 데이터베이스에 대해 단계에서 만든 스냅 샷을 비교하고 동기화합니다. 모든 보안 또는 오브젝트 변경 사항이 복원됩니다.

이 솔루션을 사용하려면 SQL Compare Professional Edition을 구입하고 스크립트를 실행할 수있는 개발 서버에 도구를 설치해야합니다. 이 모든 것이 SQL 에이전트 작업에 쉽게 적용될 수 있습니다. Powershell의 사용은 sqlcompare.exe를 실행하기 때문에 매우 기본적인 것입니다.

0

PowerShell을 통해 SMO를 통해 SQL Server 권한을 스크립팅하는 방법을 설명하는 an article here이 있습니다. 그런 다음 백업을 복원하기 전에 초기 DB에서 사용 권한을 스크립 트하고 백업이 복원 된 후에 생성 된 스크립트를 실행하는 것이 시나리오입니다.