Sybase ASE 12.5.4
根据标题,我正在寻找一种方法,在数据服务器 A 上创建登录名或更改其密码也发生在数据服务器 B 上,反之亦然。
是否可以master..syslogins
用指向 A 的 proxy_table 替换 B?我已经尝试过了,但无法删除本地系统登录(无论如何可能会造成严重破坏)。
还有其他建议吗?
Sybase ASE 12.5.4
根据标题,我正在寻找一种方法,在数据服务器 A 上创建登录名或更改其密码也发生在数据服务器 B 上,反之亦然。
是否可以master..syslogins
用指向 A 的 proxy_table 替换 B?我已经尝试过了,但无法删除本地系统登录(无论如何可能会造成严重破坏)。
还有其他建议吗?
保持系统登录同步的一种方法是在数据服务器之间进行 bcp,但每次更改密码时都必须这样做。从 cron 定期运行它可能就足够了。
如果您通过 LDAP 服务器配置身份验证,那么这将使密码保持同步,但我没有使用此功能,所以我不确定如何处理密码更改。
BCP 有效,您必须将配置选项“允许更新系统表”设置为 1。将前几个 suid(sa、probe 等)放在一边也是最安全的。
一种更高级的技术是重写 sp_addlogin 和 sp_password 来为您执行此同步。但这些是系统过程,所以你最好编写一个包装器并调用它,它可以反过来调用每台服务器上的系统存储过程。我想这取决于您的用户如何更改密码。
这是 sybase 复制(尤其是热备份)中的一个古老问题,因此有很多选择。
如果这是用于热备用解决方案,那么您需要确保特定登录名的 suid 在每台服务器上始终相同,因为这是到数据库中实际用户帐户的唯一链接。数据库权限又与用户帐户相关联。因此,混合 suid,您可以在服务器 A 和 B 上拥有不同的权限。
以下是步骤。1) 取出 B...master..syslogins 数据。(更安全的一面)。2) BCP 从服务器 A 输出 A..master..syslogins(sa 登录除外)。3) 通过启用允许更新选项,删除数据中的 B..master..syslogins 数据(sa 登录除外)和 BCp。完成 BCP 后,您可以禁用它。如果您可以编写和测试脚本,它将起作用。
谢谢纳文。