달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
System Center 2012 R2 Update Rollup 1 설치 후 테넌트 생성 시 다음과 같은 오류가 VMM 콘솔에서 발생합니다.

VMM에서 심각한 예외가 발생하고 C:\ProgramData\VMMLogs\SCVMM.b3e07f83-a61b-436b-9a2a-ac445c48ea7b\report.txt에 예외 보고서를 만듭니다.
자세한 내용은 보고서를 참조하고, 잘 알려진 오류의 근본 원인을 직접 진단할 수 있도록 사용자 포럼을 검색해 보십시오.
ID: 20413

그리고, 오류 창에서 알려준 예외 보고서의 내용을 보다 보니 다음과 같은 오류 내용이 보이더군요.

...
Error report created 2014-04-07 오전 9:06:27
CLR is not terminating
...
EventType=VMM20
P1(appName)=vmmservice.exe
P2(appVersion)=3.2.7620.0
P3(assemblyName)=unknown
P4(assemblyVer)=0.0.0.0
P5(methodName)=unknown
P6(exceptionType)=Microsoft.VirtualManager.DB.CarmineSqlException
P7(callstackHash)=0

SCVMM Version=3.2.7620.0
SCVMM flavor=C-buddy-RTL-AMD64
Default Assembly Version=3.2.7620.0
Executable Name=vmmservice.exe
Executable Version=3.2.7510.0
Base Exception Target Site=140721029663448
Base Exception Assembly name=System.Data.dll
Base Exception Method Name=System.Data.SqlClient.SqlConnection.OnError
Exception Message=일반적인 데이터베이스 오류 때문에 VMM 데이터베이스에 연결할 수 없습니다.
SQL Server가 실행 중이고 올바르게 구성되어 있는지 확인하십시오. 그런 다음 작업을 다시 시도하십시오.
EIP=0x00007ffc3c4d5a88
Build bit-size=64

위 내용을 보고 데이터베이스 서비스를 확인해 보았으나 정상이었습니다. 다시 로그를 확인하던 중 다음과 같은 내용이 확인됩니다.
...
Microsoft.VirtualManager.DB.CarmineSqlException: 일반적인 데이터베이스 오류 때문에 VMM 데이터베이스에 연결할 수 없습니다.
SQL Server가 실행 중이고 올바르게 구성되어 있는지 확인하십시오. 그런 다음 작업을 다시 시도하십시오. ---> System.Data.SqlClient.SqlException: 프로시저 또는 함수 prc_RBS_UserRoleSharedObjectRelation_Insert에 너무 많은 인수가 지정되었습니다.
위치: System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
...

위 저장 프로시저와 관련된 내용을 검색하다 보니 알려진 이슈더군요...
역시 업데이트를 설치하기 전에는 꼭 릴리즈 노트 등을 읽어 보시는 것이 좋겠습니다.
저와 같은 실수를 범하시지 않길 바랍니다.

해결 방법은 해당 저장 프로시저를 수정하면 됨며, 관련 내용은 다음 링크를 참조하시면 됩니다.
Description of Update Rollup 1 for System Center 2012 R2 Virtual Machine Manager
http://support.microsoft.com/kb/2904712/en-us 

쿼리 내용은 다음과 같습니다.
/* script starts here */
ALTER Procedure [dbo].[prc_RBS_UserRoleSharedObjectRelation_Insert]
(
        @ID uniqueidentifier,
        @ObjectID uniqueidentifier,
        @ObjectType int,
        @RoleID uniqueidentifier,
        @UserOrGroup varbinary (85),
        @ForeignAccount nvarchar (256),
        @IsADGroup bit,
        @ExistingID uniqueidentifier = NULL OUTPUT
)
AS
SET NOCOUNT ON
     SELECT @ExistingID = [ID] FROM [dbo].[tbl_RBS_UserRoleSharedObjectRelation]
     WHERE [ObjectID] = @ObjectID AND [RoleID] = @RoleID 
  AND
  -- Select owner OR Select all which matches ForeignAccount or UserOrGroup OR
  -- both ForeignAccount and UserOrGroup is NULL  
  (([UserOrGroup] = @UserOrGroup OR [ForeignAccount] = @ForeignAccount) OR
  ([UserOrGroup] IS NULL AND @UserOrGroup IS NULL AND [ForeignAccount] IS NULL AND @ForeignAccount IS NULL))
      /* Ignore duplicate entries */
      IF (@ExistingID IS NULL)
      BEGIN
     INSERT [dbo].[tbl_RBS_UserRoleSharedObjectRelation]
               ([ID]
               ,[ObjectID]
               ,[ObjectType]
               ,[RoleID]
               ,[UserOrGroup]
               ,[ForeignAccount]
               ,[IsADGroup]
               ,[IsOwner]
               )
    VALUES
    (
            @ID,
            @ObjectID,
            @ObjectType,
            @RoleID,                        
            @UserOrGroup,
            @ForeignAccount,
            @IsADGroup,
            0
    )
      END
SET NOCOUNT OFF
RETURN @@ERROR
/* script ends here */




:
Posted by 커널64