클러스터 노드를 SQL Server 2012로 업그레이드하려고 할 때 오류 발생

이 문서에서는 장애 조치(failover) 클러스터에서 SQL Server 2008 또는 SQL Server 2008 R2 instance SQL Server 2012로 업그레이드하려고 할 때 발생하는 문제에 대한 해결 방법을 제공합니다.

원래 제품 버전: SQL Server 2012
원래 KB 번호: 2782511

증상

다음과 같은 경우를 생각해볼 수 있습니다.

  • Windows Server 2012 장애 조치(failover) 클러스터에서 실행되는 2노드 Microsoft SQL Server 장애 조치(failover) 클러스터가 있습니다. 예를 들어 주 노드는 노드 A이고 수동 노드는 노드 B입니다.

    참고

    SQL Server instance SQL Server 2008 또는 SQL Server 2008 R2 instance.

  • 에 설명된 프로세스를 사용하여 주 노드(노드 A)를 SQL Server 2012로 업그레이드하려고 합니다. 장애 조치(failover) 클러스터 업그레이드 instance.

이 시나리오에서는 다음과 유사한 오류 메시지가 나타납니다.

리소스 'SQL 네트워크 이름(SQL 이름)'에 대한 공통 속성을 저장할 수 없습니다. 오류: 공급자에서 클러스터 코드를 호출하지 못했습니다. 예외 메시지: 이 리소스에 대한 하나 이상의 속성 값이 종속 리소스와 연결된 하나 이상의 속성 값과 충돌합니다.

참고

  • SQL 이름은 SQL Server 네트워크 이름의 자리 표시자입니다.
  • 이 문제로 인해 노드 A에서 업그레이드 실패가 발생하더라도 SQL Server 리소스 그룹이 업그레이드된 노드 B로 성공적으로 장애 조치(failover)됩니다. 또한 장애 조치(failover) 작업이 1분 미만 걸리기 때문에 모든 리소스는 클라이언트 연결을 크게 방해하지 않고 온라인 상태가 됩니다. 그러나 노드 A에서 업그레이드 프로세스를 완료하려면 해결 섹션에 언급된 추가 단계를 따라야 합니다.

원인

이 문제는 Windows Server 2012 장애 조치(failover) 클러스터링의 변경으로 인해 발생합니다.

해결 방법

이 섹션에서는 다음 작업을 다룹니다.

  • 노드 A에서 업그레이드를 완료합니다.
  • 문제가 새 업그레이드에 영향을 주지 않도록 방지합니다.

노드 A에서 업그레이드 완료

이 프로세스를 시작하기 전에 다음 사항을 알고 있어야 합니다.

  • 노드 제거 작업을 사용하여 노드 A를 제거할 수 없습니다. 이 작업은 SQL Server 장애 조치(failover) 클러스터 instance 삭제합니다. 따라서 복구할 수 없습니다.

  • 프로그램 제거를 사용하여 SQL Server 장애 조치(failover) 클러스터 instance 제거할 수 없습니다. 이 작업은 작동하지 않습니다.

  • 잘못된 버전의 설치 미디어(예: SQL Server 2008 또는 SQL Server 2008 R2)를 사용하여 노드 제거 작업을 실행할 수 없습니다. 이 작업을 수행하면 컴퓨터의 상태가 손상됩니다.

노드 A에 대한 업그레이드를 완료하려면 다음 두 단계가 있습니다.

  • 1단계: 업그레이드 전 상태를 복원하기 위해 노드 A에서 실패한 업그레이드 시도 후 정리합니다.

    1. 설치 프로그램 및 오류 대화 상자가 아직 닫혀 있지 않으면 닫고 업그레이드 프로그램이 완료되고 업그레이드 작업이 실패했음을 보고합니다.

    2. 실수로 장애 복구(failover)를 방지하기 위해 가능한 소유자 목록에서 노드 A를 제거합니다. 가능한 소유자 목록을 변경하려면 다음을 수행합니다.

      1. 장애 조치(failover) 노드에서 장애 조치(failover) 클러스터 관리자 스냅인을 시작합니다.
      2. 역할 아래에서 위쪽 창에서 SQL Server 장애 조치(failover) 클러스터 instance 선택합니다.
      3. 아래쪽 창에서 리소스 를 클릭하고 서버 이름 리소스를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.
      4. 속성 대화 상자에서 고급 정책을 클릭합니다.
      5. 노드를 추가하거나 제거하기 위해 각 노드에 필요한 검사 상자를 선택하거나 선택 취소합니다.
    3. 다음 위치 %Program Files%\Microsoft SQL Server\110\Setup Bootstrap\Log에서summary.txt 파일을 엽니다.

      summary.txt 파일에서 다음 문제 해결 명령을 찾습니다.setup /q /action=uninstall /instanceid=FOOINST /features=AS

    4. 관리자 권한으로 명령 프롬프트를 열고 문제 해결 명령을 SQL Server 2012 설치 파일(setup.exe)의 경로와 함께 사용합니다. 예를 들어 다음과 유사한 명령을 사용합니다.

      <SQL Server 2012 media path>\setup.exe /q /action=uninstall /instanceid=FOOINST /features=AS

      참고

      • SQL Server 2012 미디어 경로는 SQL Server 2012 미디어의 경로에 대한 자리 표시자입니다.
      • 이 명령은 자동으로 실행되며 일반적으로 5분 이내에 완료됩니다.
      • 입력 실수를 방지하기 위해 summary.txt 파일에서 명령줄 인수를 복사하여 붙여넣을 수 있습니다. 그러나 AS 이 기능은 summary.txt 파일에 제안된 것과 정확히 일치하는 매개 변수로 전달되어야 합니다. 이 명령(특히 매개 변수)의 입력이 instanceid 잘못되면 정리 작업이 실패하고 컴퓨터가 손상될 수 있습니다.
      • summary.txt 파일을 확인하여 정리 작업이 성공적으로 완료되었는지 확인합니다.
  • 2단계: 노드 A를 SQL Server 2012로 업그레이드

    1. UI 모드에서 SQL Server 2012 설치 미디어를 시작합니다.

    2. 방문 페이지의 설치 메뉴에서 업그레이드 옵션을 선택한 다음 인스턴스 구성 대화 상자로 이동합니다.

    3. 올바른 instance 이름을 선택한 다음 인스턴스 ID 필드에 올바른 값을 입력합니다.

      참고

      • 1단계에서 예제를 계속 진행하면 instance ID 값은 FOOINST입니다.
      • 설치 프로그램은 instance ID를 자동으로 결정하지 않습니다. 따라서 인스턴스 ID 필드에 미리 채워진 기본 instance ID를 사용할 수 없습니다.
      • summary.txt 파일을 검토하여 올바른 instance ID를 찾을 수 있습니다.
    4. 업그레이드 프로세스를 완료합니다.

    5. 노드 A가 성공적으로 업그레이드되면 SQL Server 장애 조치(failover) 클러스터 instance 서버 이름 리소스의 가능한 소유자 목록에 다시 추가합니다.

문제가 새 업그레이드에 영향을 주지 않도록 방지

이 문제를 방지하려면 다음 옵션 중 하나를 사용합니다.

  • 옵션 1

    1. 대부분의 임계값을 초과하지 않도록 수동 노드의 절반 이하를 먼저 업그레이드합니다.

      참고

      • 클러스터 노드 수가 짝수인 경우 수동 노드의 절반 이하를 업그레이드합니다.
      • 홀수의 클러스터 노드가 있는 경우 클러스터에 있는 노드의 절반 미만을 업그레이드해야 합니다. 클러스터의 대부분의 노드가 업그레이드되면 클러스터 리소스 그룹이 장애 조치(failover)될 때 이 문제가 발생합니다.
    2. 수동으로 업그레이드된 수동 노드를 서버 이름 리소스의 가능한 소유자 목록에 다시 추가합니다.

    3. 가능한 소유자 목록에서 업그레이드되지 않은 노드를 제거합니다.

    4. SQL Server 클러스터 그룹을 업그레이드된 노드 중 하나로 수동으로 장애 조치(failover)합니다.

    5. 업그레이드되지 않은 나머지 노드를 업그레이드합니다.

    6. 업그레이드되지 않은 모든 노드가 업그레이드되면 서버 이름 리소스의 가능한 소유자 목록에 수동으로 다시 추가합니다.

  • 옵션 2

    이 문제는 SQL Server 2012 SP1(서비스 팩 1)에서 해결되었습니다. 서비스 팩의 설치 프로그램 이진 파일을 사용하여 각 클러스터 노드에서 업그레이드 프로세스를 만들 수 있습니다. 이렇게 하려면 두 가지 메서드가 있습니다.

    • 메서드 A

      1. SQL Server 2012 SP1을 로컬 하드 디스크(예c:\sp1: ) 또는 모든 노드에서 액세스할 수 있는 네트워크 공유(예: \\share name\sp1)로 다운로드합니다.

      2. 관리자 권한으로 명령 프롬프트를 시작하고 다음 명령 중 하나를 실행합니다.

        • <Download path>\setup.exe /action=upgrade /updatesource=c:\sp1
        • <Download path>\setup.exe /action=upgrade /updatesource=\\share name\sp1
      3. 설치 프로그램의 모든 단계를 완료합니다.

        참고

        다음 위치에서 detail.log 파일을 확인하여 업그레이드가 SQL Server 2012 SP1 설치 이진 파일을 사용하고 있는지 확인할 수 있습니다.%Program Files%\Microsoft SQL Server\110\Setup Bootstrap\Log\<Time stamped folder>

        로그 파일의 시작 부분에 있는 버전 정보가 SQL Server 2012 버전이 11.0.2100.60 이후인지 확인합니다. 예를 들어 로그 파일에는 다음이 포함될 수 있습니다.

    • 메서드 B

      1. SQL Server 2012 SP1을 로컬 하드 디스크(예c:\sp1: ) 또는 모든 노드에서 액세스할 수 있는 네트워크 공유(예: \\share name\sp1)로 다운로드합니다.

      2. 관리자 권한으로 명령 프롬프트를 시작하고 다음 명령을 실행합니다.

        Download path\SQL Server 2012 Service Pack 1 Package Name.exe/Q
        

        이 명령은 SQL Server 2012 SP1 설치 이진 파일을 사용하여 노드를 사전 패치합니다.

        참고

        SQL Server 2012 설치 작업이 실패하고 MSVCR100.dll 없는 것에 대한 오류가 표시되므로 SqlSupport.msi 파일 자체를 설치할 수 없습니다. 매개 변수를/Q 사용하여 이 오류를 방지합니다. 이 매개 변수는 Sqlsupport.msi 파일과 Visual C++ 런타임 구성 요소를 모두 설치합니다.

      3. 설치 프로그램의 모든 단계를 완료합니다.

추가 정보

SQL Server 2012용 서비스 팩 1 다운로드

적용 대상

  • SQL Server 2012 Developer
  • SQL Server 2012 Enterprise
  • SQL Server 2012 Express
  • SQL Server 2012 Standard
  • SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core