SQL Server geliştirme ekibimiz için bir TEST ortamı oluşturma sürecindeyim.
Üretimde 3 SQL Server SQL01
var, yansıtılan birkaç veritabanı içeriyor SQL02
. SQL03
"otomatik yük devretme ile yüksek güvenlik" veya senkron konfigürasyonda tanık olarak görev yapar.
VMWare P2V'yi her üç makineyi de ayrı bir donanıma sanallaştırmak için kullandım, makinelerin SID'lerini yeniden yapılandırdım ve üretim sunucularımızın IP adreslerini bu yeni makinelerden kararttık.
Başlangıçta prodüksiyon tanık makinesini karartmayı unutmuştum, bu yüzden TEST makinelerindeki veritabanları hala SQL03
tanık olarak makineyi kullanıyordu . Soruna dikkat ederek, yeni sanallaştırılmış TEST tanığına işaret etmek için TEST'teki veritabanlarını yeniden yapılandırmaya karar verdim TEST03
.
Veritabanını yeni tanığı kullanacak şekilde yeniden yapılandırmak için Birincil sunucuda aşağıdaki komutu girdim TEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
Yanıt beklenmedikti:
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.
Yapılandırma üretim makinelerinde çalıştığından ve test makinelerinde hiçbir şekilde değiştirilmediğinden bu hata mesajında çok şaşırdım.
Bu işe almak LOGIN
için test tanık bir oluşturmak gerekiyordu :
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
ve GRANT
o CONNECT
söz konusu uç noktası üzerinde haklar:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
Daha sonra TEST ortamındaki yansıtılmış veritabanlarını yeni test tanığına başarıyla gösterebildim.
Üretim tanığı uç noktasını, onunla hangi güvenliğin ilişkili olduğunu görmek için nasıl inceleyebilirim?
İnceleyebileceğim bazı sistem kataloğu olması gerektiğini varsayıyorum, ancak Çevrimiçi Kitaplar, Uç Noktalar için belirli bir şeye sahip görünmüyor ve Bing iyi, Bingless ...
İlave bilgi:
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';
İadeler:
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
Ve:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
İadeler:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
sys.server_permissions
Yansıtma uç nokta nesnesi için giriş yok gibi görünüyor . Hayır major_id
ve hayır minor_id
65536 ile eşleşir. Ayrıca, sistem veritabanlarının hiçbiri uç noktaya herhangi bir referans içermez.
Kayboldum.