sql-server – 移动数据库(备份,还原)后,我必须重新添加用户
我偶尔会使用SQL Server Management Studio中的数据库备份和还原将数据库(SQL Express 2012)从开发计算机移动到服务器,反之亦然.
每当我执行此操作时,目标计算机上的应用程序无法访问数据库,直到我从数据库用户(数据库,安全性,SQL Server Management Studio中的用户)中删除他们使用的用户“george”,并将其重新添加为安全,登录,george / properties,用户映射下的所有者. 有一个更好的方法吗?这看起来有点令人费解. 解决方法这是 logins和 users之间的差异以及它们之间的关系:>登录 – 允许实体连接到SQL Server实例的实例级主体.它们本质上不授予对实例上的数据库的任何访问权限.一个例外是具有sysadmin权限的登录可以使用数据库,因为它们是sysadmin,但是由于sysadmin级别权限. 在还原时,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |