P6 数据库附件/还原到SQLServer2008无法使用?

 在进行数据库的备份和还原是数据库操作中经常遇见的操作,

在 Micosoft SQLServer 2005  的时代,备份与还原都比较简单,备份好,直接还原就可以使用备份好的数据库了。而到了SQLServer2008 的时候,经常为直接还原的数据库用自己创建的用户使用不了而烦恼(绝对不是SA 用户哦)

下面我们就来一起解决吧 。。。

首先 数据库有sa 其他用户,这里举例 pubuser(新增加的一个用户)吧

Oracle Primavera P6 数据库附加/还原到SQLServer_Primavera P6

在sa 的登录属性中,我们可以看到数据库 P6V7_MMDB 的用户和默认架构都是dbo,(这其实是对数据库管理着的默认设置,当作高级的DBA来使)

Oracle Primavera P6 数据库附加/还原到SQLServer_恢复数据库_02

同样的我们看到pubuser 的属性里,首先用户和默认架构都是空的,(pubuser 不能映射到 数据库 P6V7_MMDB),因而pubuser 不能使用操作数据库 P6V7_MMDB

Oracle Primavera P6 数据库附加/还原到SQLServer_恢复数据库_03


Oracle Primavera P6 数据库附加/还原到SQLServer_恢复_04

尝试修改一些P6V7_MMDB 的一些相关信息,勾上该数据库的映射,并同时添加其默认架构

Oracle Primavera P6 数据库附加/还原到SQLServer_恢复_05

最后发现保存时保存,用户,组,角色pubuser 在当前数据库中已经存在错误 15023

首先介绍一下sql server中“登录”与“用户”的区别,“登录”用于用户身份验证,而数据库“用户”帐户用于数据库访问和权限验证。登录通过安全识别符 (SID) 与用户关联。将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户。这种情况被称为存在“孤立用户”。此时是不能通过新建登录或者是对同名登录授予对应数据库的“用户”权限来解决登录问题,因为SQL Server会报出“错误15023:当前数据库中已存在用户或角色”,为了解决这个问题,需要调用系统存储过程sp_change_users_login,具体用法如下:

使用数据库 P6V7_MMDB 并执行下面的SQL语句

use P6V7_MMDB
go
sp_change_users_login 'update_one', 'pubuser', 'pubuser'

 看看最后的结果

Oracle Primavera P6 数据库附加/还原到SQLServer_Oracle_06