SQL Server 개발 직원을위한 TEST 환경을 만드는 중입니다.
프로덕션 환경에는 3 개의 SQL Server SQL01
가 있으며에 미러링 된 여러 데이터베이스가 포함되어 있습니다 SQL02
. SQL03
"자동 장애 조치를 통한 높은 안전성"또는 동기식 구성에서 감시 역할을합니다.
VMWare P2V를 사용하여 세 대의 머신을 모두 별도의 하드웨어로 가상화하고 머신의 SID를 재구성했으며이 새로운 머신에서 프로덕션 서버의 IP 주소를 블랙홀했습니다.
처음에는 프로덕션 감시 시스템을 블랙홀하는 것을 잊어 버렸으므로 테스트 머신의 데이터베이스는 여전히 머신을 감시자로 사용하고있었습니다 SQL03
. 문제를 알아 차리고 새로 가상화 된 TEST 감시를 가리 키도록 TEST에서 데이터베이스를 재구성하기로 결정했습니다 TEST03
.
새 감시를 사용하도록 데이터베이스를 재구성하려면 기본 서버에서 다음 명령을 입력했습니다 TEST01
.
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
응답이 예상치 못한 것입니다.
The ALTER DATABASE command could not be sent to the remote server instance
'TCP://TEST03.domain.inet:5022'. The database mirroring configuration was
not changed. Verify that the server is connected, and try again.
구성이 프로덕션 머신에서 작동하고 테스트 머신에서 어떤 식 으로든 수정되지 않았기 때문에이 오류 메시지가 매우 당황했습니다.
이 기능을 작동 시키려면 LOGIN
테스트 감시 를 작성해야했습니다 .
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
그리고 GRANT
그 CONNECT
문제의 엔드 포인트에 대한 권리 :
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
그런 다음 테스트 환경에서 미러링 된 데이터베이스를 새로운 테스트 감시 대상으로 성공적으로 가리킬 수있었습니다.
프로덕션 감시 엔드 포인트를 검사하여 관련된 보안을 확인하려면 어떻게해야합니까?
검사 할 수있는 시스템 카탈로그가 있어야한다고 가정하지만 Books-on-Line에는 엔드 포인트에 특정한 것이없는 것 같습니다 .Bing은 잘, Bingless입니다 ...
추가 정보:
SELECT ep.endpoint_id, p.class_desc, p.permission_name, ep.name, sp.name
FROM sys.server_permissions p
INNER JOIN sys.endpoints ep ON p.major_id = ep.endpoint_id
INNER JOIN sys.server_principals sp ON p.grantee_principal_id = sp.principal_id
WHERE class = '105';
보고:
endpoint_id class_desc permission_name endpoint_name principal_name
2 ENDPOINT CONNECT TSQL Local Machine public
3 ENDPOINT CONNECT TSQL Named Pipes public
4 ENDPOINT CONNECT TSQL Default TCP public
5 ENDPOINT CONNECT TSQL Default VIA public
과:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
보고:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
sys.server_permissions
미러링 끝점 개체 에 대한 항목이없는 것 같습니다. No major_id
및 no minor_id
65536. 또한 시스템 데이터베이스 중 어느 것도 엔드 포인트에 대한 참조를 포함하지 않습니다.
나는 길을 잃었다.