Я зараз створюю TEST-середовище для наших співробітників із розробки SQL Server.
У виробництві у нас є 3 сервери SQL, SQL01
містить кілька баз даних, до яких відображено дзеркальне відображення SQL02
. SQL03
виступає свідком у "високій безпеці з автоматичним відмовою" або синхронною конфігурацією.
Я використовував VMWare P2V для віртуалізації всіх трьох машин на окремому апаратному забезпеченні, переконфігурувавши SID-машини машин та обробляв IP-адреси наших виробничих серверів з цих нових машин.
Я спочатку забув скрутити виробничу машину свідків, тому бази даних на машинах TEST все ще використовували цю 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];
Тоді мені вдалося успішно вказати дзеркальні бази даних на середовищі TEST до нового свідка випробувань.
Як я можу перевірити кінцеву точку свідка виробництва, щоб побачити, яка безпека пов'язана з нею?
Я припускаю, що має бути якийсь системний каталог, який я можу перевірити, однак у "Книг он-лайн", здається, немає нічого конкретного для Кінцевих точок, і 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
об'єкта кінцевої точки дзеркального відображення немає запису . Ні major_id
та немає minor_id
65536. Також жодна із системних баз даних не містить посилань на кінцеву точку.
Я в збитку.