我在生产数据库上设置了镜像。我在为数据库服务的数据库和镜像上都有登录设置。它具有相同的登录信息和配置。
当我对数据库进行故障转移时,ASP.NET 应用程序故障转移到第二个数据库(它已识别故障转移伙伴),但登录停止工作。由于某种原因,它开始工作了。当我故障恢复到原始的生产数据库时,ASP.NET 应用程序再次被踢出——尽管我知道登录存在于生产中,因为应用程序最初能够登录。
这是事件链:
- 生产+镜像有相同的登录
- 故障转移到镜像,登录被拒绝。出于某种神秘的原因开始工作。
- 镜像故障转移到原始生产,最初有效的登录现在无效。
您需要确保登录的 SID 在两台服务器上相同。确保它们相同的唯一方法是编写从工作服务器到镜像服务器的登录脚本。您不能简单地使用相同的名称和密码重新创建登录名,因为登录名与数据库中存在的用户不匹配。当你
CREATE LOGIN
必须使用该SID = xxx
选项时。也许下面的代码会帮助您指明正确的方向。