【问题标题】:How to correct SQL server mapping after database restoration?数据库恢复后如何更正 SQL Server 映射?
【发布时间】:2020-07-17 15:00:38
【问题描述】:

我编写的程序使用 SQL 服务器 DBMS,具有 3 个数据库:DB、Archives、HL7。 在新PC上恢复3个数据库后,访问HL7数据库时出现实体框架错误:

sa 用户会话打开失败

我在 SQL Server Management Studio 中搜索了 3 个数据库之间的 dall 差异,发现了这个:

当我尝试纠正这个问题时,我得到了这个错误:

它说:当前数据库中已经存在 dbo 用户、组或规则。

你知道如何纠正这个问题吗? 谢谢。

编辑: 我试过这个:

use HL7;
exec sp_change_users_login 'Auto_Fix','dbo';

我得到了这个结果:

放弃 de cette 程序。 'dbo' est une valeur interdite pour le nom d'ouverture de session dans cette procédure。

意思是:

过程中止。此语句中不允许使用“dbo”作为会话打开名称。

【问题讨论】:

  • 你试过了吗,sp_change_users_login
  • 请看我的编辑

标签: sql-server authentication ssms


【解决方案1】:

这可能是由于 SSID 不匹配造成的。要检查这一点,请运行以下命令。

EXEC sys.sp_change_users_login @Action = 'Report'

如果出现有问题的登录,您可以重新同步 SSID,如下所示:

EXEC  sp_change_users_login @Action='update_one', @UserNamePattern='your_user_name',@LoginName='your_user_name'; 

【讨论】:

  • 在 SSMS 中,结果表(包含 UserName、UserSID 列)不包含任何行,所以我想这不是正确的问题。
  • 这可能很明显,但请确保在正确的数据库范围内运行它。
  • 对不起,我不明白你的建议;你说的视图是什么意思?我的 MVVM 项目的 C# 视图?
  • 好的,我想我明白了:在上面的 sp_change_users_login 语句之前,我写了“use HL7;”
  • 我得到了描述的结果:没有行
【解决方案2】:

您不能以通常的方式“重新映射”sa。而是重置所有者:

use master;
alter authorization on database::HL7 to sa;

作为一点建议,您不应该真正以系统管理员帐户的身份从应用程序连接。创建一个新的登录名和用户,并为其提供实际需要的权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多