Saya sedang dalam proses menciptakan lingkungan TEST untuk staf pengembangan SQL Server kami.
Dalam produksi kami memiliki 3 Server SQL, SQL01
berisi beberapa database yang dicerminkan ke SQL02
. SQL03
bertindak sebagai saksi dalam "keamanan tinggi dengan failover otomatis" atau konfigurasi sinkron.
Saya telah menggunakan VMWare P2V untuk memvirtualisasikan ketiga mesin ke perangkat keras yang terpisah, mengkonfigurasi ulang SID mesin, dan menghitamkan alamat IP server produksi kami dari mesin-mesin baru ini.
Awalnya saya lupa membuat lubang hitam pada mesin saksi produksi, jadi basis data pada mesin TEST masih menggunakan SQL03
mesin sebagai saksi. Melihat masalah ini, saya memutuskan untuk mengkonfigurasi ulang basis data pada TEST untuk menunjuk ke saksi TEST yang baru tervirtualisasi, sebut saja TEST03
.
Untuk mengkonfigurasi ulang basis data agar menggunakan saksi baru, saya memasukkan perintah berikut di server Utama TEST01
:
ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';
Responsnya tidak terduga:
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.
Saya sangat bingung dengan pesan kesalahan ini karena konfigurasi tidak bekerja pada mesin produksi, dan belum dimodifikasi dengan cara apa pun pada mesin uji.
Agar ini berfungsi, saya perlu membuat LOGIN
pada saksi uji:
CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];
dan GRANT
itu CONNECT
hak pada titik akhir yang dimaksud:
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];
Saya kemudian berhasil mengarahkan database cermin pada lingkungan TEST kepada saksi uji baru.
Bagaimana saya bisa memeriksa titik akhir saksi produksi untuk melihat keamanan apa yang terkait dengannya?
Saya berasumsi pasti ada beberapa katalog sistem yang dapat saya periksa, namun Books-on-Line tampaknya tidak memiliki sesuatu yang spesifik untuk Endpoint, dan Bing baik-baik saja, Bingless ...
Informasi tambahan:
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';
pengembalian:
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
Dan:
SELECT name, endpoint_id, protocol_desc, type_desc, role_desc
FROM sys.database_mirroring_endpoints;
Pengembalian:
name endpoint_id protocol_desc type_desc role_desc
Mirroring 65536 TCP DATABASE_MIRRORING WITNESS
Tampaknya tidak ada entri sys.server_permissions
untuk objek endpoint mirroring. Tidak major_id
dan tidak ada yang minor_id
cocok dengan 65536. Juga, tidak ada database sistem yang berisi referensi ke titik akhir.
Saya bingung.
sumber
Lihat dokumentasi Buku Daring untuk
sys.database_mirroring_endpoints
Untuk izin objek server Anda melihat tempat yang biasa
sys.server_permissions
,. Seperti halnya setiap kasus ketika keamanan Windows terlibat, hal-hal lebih rumit karena keanggotaan grup windows, dan Anda juga harus mempertimbangkan hierarki izin .sumber
sys.server_permissions
,. Seperti halnya setiap kasus ketika keamanan Windows terlibat, hal-hal lebih rumit karena keanggotaan grup windows, dan Anda juga harus mempertimbangkan hierarki izin .