mdf, ldf 파일을 이용한 사용자 데이터베이스 Attach 그리고 bak, trn 파일을 이용한 사용자 데이터베이스 복원 이후
해당 사용자 데이터베이스의 게시/구독 실패가 발생할 수 있습니다.
다양한 원인이 있을 수 있지만 이번 포스팅에서는 아래의 로그 판독기 에이전트 오류를 해결하는 방법을 설명합니다.
오류 메시지:
- '게시서버'에서 'sp_replcmds'을(를) 실행할 수 없습니다. (원본: MSSQL_REPL, 오류 번호: MSSQL_REPL20011)
- 보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다. (원본: MSSQLServer, 오류 번호: 15517)
- '게시서버'에서 'sp_replcmds'을(를) 실행할 수 없습니다. (원본: MSSQL_REPL, 오류 번호: MSSQL_REPL22037)

*트러블 슈팅을 위한 자료로 게시/구독 구성 과정은 생략하였습니다.
[원인]
해당 오류는 '보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다.' 메세지에 집중할 필요가 있습니다.
게시하고자 하는 사용자 데이터베이스의 소유자를 확인합니다.

이후 아래 쿼리를 입력한 후 결과를 확인합니다.
| /* dbo 계정의 SID 값 확인 그리고 사용자 데이터베이스 소유자 계정의 SID값 확인 */ USE [사용자 데이터베이스]; SELECT name, type_desc, principal_id, sid FROM sys.database_principals WHERE name = 'dbo'; SELECT name, sid FROM sys.server_principals WHERE name = '[사용자 데이터베이스 소유자 계정]'; |

사용자 데이터베이스의 dbo의 SID 값과 소유자의 SID값이 서로 다르게 출력되는 것을 확인할 수 있습니다.
이는 dbo 소유자가 올바르게 매핑되지 않은 결과를 보여줍니다.
따라서 dbo 소유자를 사용자 데이터베이스 소유자 계정으로 다시 설정하는 과정이 필요합니다.
[해결방안]
아래 쿼리를 이용하여 dbo 소유자를 sa로 변경한 후 다시 원래 소유자 계정으로 설정합니다.
| /* dbo 계정을 sa로 변경 후 다시 사용자 데이터베이스 소유자 계정으로 설정 */ ALTER AUTHORIZATION ON DATABASE::[사용자 데이터베이스] TO sa; ALTER AUTHORIZATION ON DATABASE::[사용자 데이터베이스] TO [사용자 데이터베이스 소유자 계정]; |

이후 아래 쿼리를 이용하여 dbo의 SID 값과 사용자 데이터베이스 소유자 계정의 SID 값을 비교합니다.
| /* dbo 계정의 SID 값 확인 그리고 사용자 데이터베이스 소유자 계정의 SID 값 확인 */ USE [사용자 데이터베이스]; SELECT name, type_desc, principal_id, sid FROM sys.database_principals WHERE name = 'dbo'; SELECT name, sid FROM sys.server_principals WHERE name = '[사용자 데이터베이스 소유자 계정]'; |

위 방법을 이용하여 dbo 계정의 SID 값과 사용자 데이터베이스 소유자 계정의 SID 값을 일치시킬 수 있습니다.
이후 로그 판독기 에이전트의 실행 상태를 확인합니다.

또한 복제 모니터를 통해 게시/구독간의 복제 상태를 확인합니다.

[결론]
복원 또는 연결한 사용자 데이터베이스는 소유자 계정과 dbo 계정이 서로 매칭되지 않을 수가 있습니다.
이럴 경우 소유자 계정과 dbo 계정을 매칭해주는 과정을 통해
로그 판독기 에이전트의 이슈를 해결할 수 있습니다.
'MS SQL' 카테고리의 다른 글
| [MS SQL] 비 도메인 환경의 SQL Server Mirror 구성 가이드 (0) | 2024.04.16 |
|---|---|
| [MS SQL] SQL AlwaysOn 고가용성 구성가이드 Part.02 (2) | 2023.09.08 |
| [MS SQL] SQL AlwaysOn 고가용성 구성가이드 Part.01 (0) | 2023.09.08 |
| [MS SQL] 명명된 인스턴스 설치하기 (0) | 2023.05.09 |
| [MS SQL] SQL Server 관리 도구 SSMS 설치하기 (0) | 2023.05.05 |