在使用数据库的过程中经常会遇到数据库迁移或者数据迁移的问题或者有突然的数据库损坏这时需要从数据库的备份中直接恢复但是此时会出现问题这里说明几种常见问题的解决方法 一孤立用户的问题 比如以前的数据库的很多表是用户test建立的但是当我们恢复数据库后test用户此时就成了孤立用户没有与之对应的登陆用户名哪怕你建立了一个test登录用户名而且是以前的用户密码用该用户登录后同样没办法操作以前属于test的用户表 这个问题有两种办法解决 先说解决的前提条件 首先要用备份文件还原数据库我们这里的数据库名为testdb里面有属于用户test的用户表这个很容易了操作了不多讲了在企业管理器中很方便可以恢复恢复后就产生了孤立用户test 然后用sa用户或者具有DBA权限的用户登录创建一个test数据库登录用户密码随便设置了也可以和以前的保持一致我们用它来对应孤立的test用户 下面就有两种操作方法了第一种就是改变对象的属主第二种就是使登录用户和数据库的孤立用户对应起来 方法一修改对象属主 就是将原本属于数据库用户test的用户表修改为属于dbo的用户表然后修改test登录用户的数据库为testdb就可以直接使用test登录用户登录后对该数据库进行操作了 使用的存储过程 sp_changeobjectowner [ @objname = ] object [ @newowner = ] owner 参数说明 [ @objname = ] object 当前数据库中现有表视图用户定义函数或存储过程的名称object 是 nvarchar()没有默认值如果架构及其所有者具有相同的名称则 object 可由现有对象所有者限定格式为 existing_ownerobject [ @newowner=] owner 将成为对象的新所有者的安全帐户的名称owner 的数据类型为 sysname没有默认值owner 必须是可访问当前数据库的有效数据库用户服务器角色Microsoft Windows 登录名或 Windows 组如果新所有者是没有对应数据库级主体的 Windows 用户或Windows 组则将创建数据库用户 实例 以下示例将 authors 表的所有者更改为dbo EXEC sp_changeobjectowner authors dbo; GO 这个方法有个最大的缺点就是当表的数量非常多而且还有存储过程或者触发器之类的修改起来会非常麻烦需要一个一个修改所以不提倡使用现在网上有一个批量修改的存储过程大家可以找一下这里就不说了而是教大家一个更简单的 [] [] |