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

前端之家收集整理的这篇文章主要介绍了sql-server – 移动数据库(备份,还原)后,我必须重新添加用户前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我偶尔会使用sql Server Management Studio中的数据库备份和还原将数据库(sql Express 2012)从开发计算机移动到服务器,反之亦然.

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

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

解决方法

这是 loginsusers之间的差异以及它们之间的关系:

>登录 – 允许实体连接到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

猜你在找的MsSQL相关文章