加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 移动数据库(备份,还原)后,我必须重新添加用户

发布时间:2020-12-12 06:15:21 所属栏目:MsSql教程 来源:网络整理
导读:我偶尔会使用SQL Server Management Studio中的数据库备份和还原将数据库(SQL Express 2012)从开发计算机移动到服务器,反之亦然. 每当我执行此操作时,目标计算机上的应用程序无法访问数据库,直到我从数据库用户(数据库,安全性,SQL Server Management Studio中
我偶尔会使用SQL Server Management Studio中的数据库备份和还原将数据库(SQL Express 2012)从开发计算机移动到服务器,反之亦然.

每当我执行此操作时,目标计算机上的应用程序无法访问数据库,直到我从数据库用户(数据库,安全性,SQL Server Management Studio中的用户)中删除他们使用的用户“george”,并将其重新添加为安全,登录,george / properties,用户映射下的所有者.

有一个更好的方法吗?这看起来有点令人费解.

解决方法

这是 logins和 users之间的差异以及它们之间的关系:

>登录 – 允许实体连接到SQL Server实例的实例级主体.它们本质上不授予对实例上的数据库的任何访问权限.一个例外是具有sysadmin权限的登录可以使用数据库,因为它们是sysadmin,但是由于sysadmin级别权限.
> Users – 允许实体连接到SQL Server数据库的数据库级主体.用户通过SID与登录相关联,在两者之间创建关系并允许登录连接到实例,然后使用关联的用户连接到数据库.

在还原时,SQL身份验证登录和数据库用户通常会发生的事情是SIDS将不同步,从而破坏了关系.必须先修复此关系,然后才能使用该登录连接到数据库,因为在SQL Server眼中,这些主体不再连接.您可以使用以下SQL修复此问题:

ALTER USER [foo] WITH LOGIN=[foo]

您可以在数据库的上下文中使用以下查询来检查孤立:

select
    dp.name [user_name],dp.type_desc [user_type],isnull(sp.name,'Orhphaned!') [login_name],sp.type_desc [login_type]
from   
    sys.database_principals dp
    left join sys.server_principals sp on (dp.sid = sp.sid)
where
    dp.type in ('S','U','G')
    and dp.principal_id >4
order by sp.name

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读