在 AlwaysOn 可用性组中管理使用数据库的作业的登录名
适用范围:SQL Server
你应当定期维护 AlwaysOn 可用性组 (AG) 的每个主数据库及其相应的辅助数据库上的同一组用户登录名和 SQL Server 代理作业。 在为 AG 承载可用性副本的每个 SQL Server 实例上,必须重新生成这些登录名和作业。
SQL Server 代理作业
您需要手动将相关作业从承载原始主副本的服务器实例复制到承载原始辅助副本的服务器实例上。 对于所有数据库,您需要在每个相关作业开始时添加逻辑,以使该作业仅在主数据库上执行,也就是说,仅在逻辑副本是数据库的主副本时执行。
承载 AG 的可用性副本的服务器实例的配置可能有所不同,如具有不同的驱动器号等。 每个可用性副本的作业必须允许可能存在的此类差异。
备份作业可以使用 sys.fn_hadr_is_preferred_backup_replica 函数,根据 AG 备份首选项,确定本地副本是否为用于备份的首选副本。 使用维护计划向导创建的备份作业在本机上使用此函数。 对于其他备份作业,我们建议您将此函数用作您的备份作业中的一个条件,以便仅在首选副本上执行它们。 有关详细信息,请参阅卸载可用性组次要副本的受支持备份。
登录
如果使用的是包含数据库,您可以配置数据库中的包含用户,对于这些用户,您不必在承载辅助副本的服务器实例上创建登录名。 对于非包含可用性数据库,您需要在承载可用性副本的服务器实例上为这些登录名创建用户。 有关详细信息,请参阅 CREATE USER。
如果您的任何应用程序使用 SQL Server 身份验证或本地 Windows 登录名,请参阅本文后面的使用 SQL Server 身份验证或本地 Windows 登录名的应用程序的登录名。
注意
在服务器实例上未定义或错误定义了其相应 SQL Server 登录名的数据库用户无法登录到实例。 这样的用户被称为此服务器实例上的数据库的“孤立用户” 。 如果给定服务器实例上存在孤立用户,您可以随时设置用户登录名。 有关详细信息,请参阅孤立用户故障排除 (SQL Server)。
其他元数据
在承载某一给定 AG 的辅助副本的各服务器实例上,登录名和作业不是需要重新创建的唯一信息。 例如,您可能需要重新创建服务器配置设置、凭据、加密的数据、权限、复制设置、Service Broker 应用程序、触发器(在服务器级别)等。 有关元数据的详细信息,请参阅使数据库在其他服务器上可用时管理元数据。
SQL Server 身份验证或本地 Windows 登录
如果某一应用程序使用 SQL Server 身份验证或本地 Windows 登录名,则不匹配的安全标识符 (SID) 可能会阻止该应用程序的登录名在 SQL Server 的远程实例上解析。 不匹配的 SID 将导致该登录名成为远程服务器实例上的孤立用户。 当应用程序连接到发生故障转移后的镜像数据库或日志传送数据库,或是连接到从备份初始化的复制订阅服务器数据库时,就可能会发生此问题。
你应该在设置此类应用程序时采取预防措施,以便使用由 SQL Server 的远程实例承载的数据库。 预防措施包括将登录名和密码从 SQL Server 的本地实例传输到 SQL Server的远程实例。 有关如何避免此问题的详细信息,请参阅知识库文章 918992 —在 SQL Server 实例间传输登录名和密码。
注意
这个问题会影响不同计算机上的 Windows 本地帐户。 但是,这个问题不会在域帐户上发生,因为 SID 在每台计算机上都是相同的。
有关详细信息,请参阅 与数据库镜像和日志传送有关的孤立用户 (数据库引擎博客)。