数据库镜像服务器B和见证服务器C可以通过网络相互访问,我让见证服务器C做 主服务器和之前的镜像服务器B组成了一对镜像伙伴。从镜像监视器可以看出,两台机器都可以互相访问.
但一旦加入第三台机器,比如我的主题,见证服务器C和镜像服务器B已经断开连接.
打开见证服务器Csql server profiler,执行主题服务器
ALTER DATABASE Test1 SET witness = 'TCP://192.168.1.150:7039';
没有捕获任何跟踪
两个服务器的登录账户是否在对方服务器的终点被授予CONNECT的权限。
这个怎么检查?
我用
SELECT 'Metadata Check';
SELECT EP.name, SP.STATE,
CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))
AS GRANTOR,
SP.TYPE AS PERMISSION,
CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))
AS GRANTEE
FROM sys.server_permissions SP , sys.endpoints EP
WHERE SP.major_id = EP.endpoint_id
ORDER BY Permission,grantor, grantee;
GO
结果如下:
endpoint_mirroring G 20110407-0927\Administrator CO M_149
endpoint_mirroring G 20110407-0927\Administrator CO M_150
endpoint_mirroring G 20110407-0927\Administrator CO M_122
在见证服务器150上有一个户代码M_122是主服务器上的登录名,M_149是镜像服务器上的登录名,M_150是见证服务器上的登录名:
CREATE LOGIN M_122 WITH PASSWORD = 'M_Test';
CREATE USER M_122 for LOGIN M_122
CREATE CERTIFICATE T122_Cert
AUTHORIZATION M_122
FROM FILE = ''
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO M_122;
GO
CREATE LOGIN M_149 WITH PASSWORD = 'M_Test';
CREATE USER M_149 for LOGIN M_149
CREATE CERTIFICATE T149_Cert
AUTHORIZATION M_149
FROM FILE = ''
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO M_149;
GOCREATE LOGIN M_150 WITH PASSWORD = 'M_Test';
CREATE USER M_150 for CERTIFICATE T150_Cert;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO M_150;GO
(后缀150是见证服务器,后缀149是镜像服务器,后缀122是主题服务器)其他两台机器也执行了类似的代码
你能帮我分析一下有什么问题吗?