中文

如何在从备份恢复数据库后重新同步 SQL Server 登录帐户或用户

摘要

提供的说明描述了如何在从备份恢复数据库后重新同步 SQL Server 登录帐户和数据库用户。 当从备份 (.bak) 恢复 SDE 方案数据库或从之前分离的数据库 (.mdf) 附加 SDE 方案数据库时,始终需要此过程。 在这些情况下,地理数据库中的 SDE 用户与 SQL Server 实例的登录帐户不同步。

如果未添加 SDE 登录帐户且未与该数据库中的用户同步,则会由于登录用户不正确而连接失败,或者服务将无法启动。

过程

可以运行存储过程 (SP_CHANGE_USERS_LOGIN) 以通过将现有数据库用户映射到相应的 SQL Server 登录帐户来纠正此问题。 应针对“SDE”用户需要访问权限才可管理的所有数据库运行此过程。 对于任何经 SQL Server 身份验证的数据库用户,也必须运行此过程。 启动服务时,仅需要“SDE”用户。

  1. 在运行 sp_change_users_login 存储过程之前,请确保与数据库用户关联的 SQL Server 登录帐户已添加至“安全性”>“登录帐户”下的实例中。
  2. 在 SQL Server Management Studio 中打开新的查询并执行以下命令:

    编码:

    use database_name
    go
    EXEC sp_change_users_login 'Update_One', 'sde', 'sde'
    go


    命令完成后,会报告以下内容:

    “已成功完成命令。”
    MSDN: sp_change_users_login (Transact-SQL)
  3. 验证修复:
    尝试作为 SDE 或 USER 登录帐户连接到数据库或在 ArcCatalog 中进行连接,可验证登录帐户和用户是否正确同步。

    还可运行以下查询来查询主数据库中的 syslogins 表,并将其与个人用户数据库中的 sysusers 表进行比较。 要验证 SID 列是否匹配,可使用以下查询:

    编码:

    use master
    go
    select * from syslogins where name='sde'
    go

    use database_name
    go
    select * from sysusers where name='sde'
    go