在 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 在每台计算机上都是相同的。

有关详细信息,请参阅 与数据库镜像和日志传送有关的孤立用户 (数据库引擎博客)。