我要把万网cn1w123服务器的sql数据库移到Bb12345服务器上(A,B是相同的类型的空间).
步骤:
1.把A上的数据库备份(文件名是:cn1w123_db,无扩展名)
2.在本地还原,并导出.sql脚本文件.
3.把sql脚本里的cn1w123全部修改为Bb12345,保存.
4.用企业管理器连接上Bb12345服务器,在查询分析器里打开刚修改过的sql脚本并运行.
此时出现错误:
      在数据库'Bb12345_db'中拒绝了SETUSER权限。万网提供的权限是public,我是不是要修改备份下来的数据库权限?怎么修改?若不需要修改权限,那又怎么解决这个问题.
请大家帮帮,我今天必须完成这个任务.谢谢!!在线等.

解决方案 »

  1.   

    找出脚本中的
    SETUSER
    语句,并删除就可以了
      

  2.   

    SQL还原数据库后孤立用户问题处理所谓孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录孤立帐户的产生一般是一下两种:
    1.将备份的数据库在其它机器上还原;
    2.重装系统或SQL SERVER之后只还原了用户库解决方法是使用sp_change_users_login来修复sp_change_users_login的用法有三种用法1:
    exec sp_change_users_login 'REPORT'列出当前数据库的孤立用户用法2:
    exec sp_change_users_login 'AUTO_FIX','用户名'可以自动将用户名所对应的同名登录添加到syslogins中用法3:
    exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'
    将用户名映射为指定的登录名 
    ----------------------------------------------------------------------------------------------------------------
    看看是否有用
    SQL孤立用户解决方案  
    症状当您将数据库备份恢复到另一台服务器时,可能会遇到孤立用户的问题SQL Server 联机丛书中的孤立用户疑难解答主题中没有讲述解决此问题的具体步骤本文介绍了如何解决孤立用户问题状态Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题更多信息虽然术语登录和用户经常交换使用,但它们之间有很大的不同登录用于用户身份验证,而数据库用户帐户用于数据库访问和权限验证登录通过安全识别符 (SID) 与用户关联访问 SQL Server 服务器需要登录验证特定登录是否有效的过程称为身份验证登录必须与 SQL Server 数据库用户相关联您使用用户帐户控制数据库中执行的活动如果数据库中不存在针对特定登录的用户帐户,使用该登录的用户即使能够连接到 SQL Server 服务器,也无法访问数据库但是,该情形的唯一例外是当数据库包含guest用户帐户时与用户帐户不关联的登录将被映射到 guest 用户相反,如果存在数据库用户,但没有与其关联的登录,则该用户将无法登录到 SQL Server 服务器中将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户这种情况被称为存在孤立用户孤立用户疑难解答当您将数据库备份恢复到另一台服务器时,可能会遇到孤立用户的问题以下情形说明了该问题并阐述如何加以解决1. 向主数据库添加一个登录,并将默认数据库指定为 Northwind: Use master go sp_addlogin 'test', 'password', 'Northwind'2. 向刚创建的用户授予访问权限: Use Northwind go sp_grantdbaccess 'test'3. 备份数据库 BACKUP DATABASE Northwind
    TO DISK = 'C:MSSQLBACKUPNorthwind.bak'4. 将数据库恢复到其他 SQL Server 服务器: RESTORE DATABASE Northwind
    FROM DISK = 'C:MSSQLBACKUPNorthwind.bak'
          
    恢复的数据库包含名为test的用户,但没有相应的登录,这就导致test成为孤立用户 
    5. 现在,为了检测孤立用户,请运行此代码: Use Northwind go sp_change_users_login 'report'
          
    输出中列出了所有登录,其中包含 Northwind 数据库的 sysusers 系统表和主数据库的 sysxlogins 系统表中不匹配的条目解决孤立用户问题的步骤1. 为前一步中的孤立用户运行以下命令:Use Northwind
    go
    sp_change_users_login 'update_one', 'test', 'test'
          
    这样,就将服务器登录test与 Northwind 数据库用户test重新连接起来sp_change_users_login 存储过程还可以使用auto_fix参数对所有孤立用户执行更新,但不推荐这样做,因为 SQL Server 会尝试按名称匹配登录和用户大多数情况下这都是可行的;但是,如果用户与错误登录关联,该用户可能拥有错误的权限2. 在上一步中运行代码后,用户就可以访问数据库了然后用户可以使用 sp_password 存储过程更改密码: Use master
    go
    sp_password NULL, 'ok', 'test'
          
    此存储过程不能用于 Microsoft Windows NT 安全帐户通过 Windows NT 网络帐户连接到 SQL Server 服务器的用户是由 Windows NT 授权的;因此,这些用户只能在 Windows NT 中更改密码只有 sysadmin 角色的成员可以更改其他用户的登录密码 
    ----------------------------------------------------------------------------------------------------------------SQL2005删除用户的时候,产生数据库主体在该数据库中拥有架构,无法删除的解决办法--执行如下SQL语句ALTER   AUTHORIZATION   ON   SCHEMA::db_owner   TO   dbo; 
    --然后手动删除就可以了
    ----------------------------------------------------------------------------------------------------------------
    [导入]sql2000备份的数据库还原到sql2005后,选择数据库关系图提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法 
    sql2000备份的数据库还原到sql2005后,选择数据库关系图提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象若要继续,请首先使用数据库属性对话框的文件页或 ALTER AUTHORIZATION 语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象 
         
    解决方法如下: 
    1设置兼容级别为90(2005为90) 
    USE [master] 
    GO 
    EXEC dbo.sp_dbcmptlevel @dbname='数据库名', @new_cmptlevel=90 
    GO  或是选责你还原的数据库,点右键,选属性->选项->兼容级别,选择sqlserver2005(90) 然后确定,      这时,你在该数据库下展开数据库关系图节点时会有个提示,"此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建",选择是即可2通过以上的方法操作,如果问题依然存在的话,按下列方法继续选择你的数据库,然后选择"安全性"->"用户",选择dbo,打开属性页,如登录名为空的话,新建查询,然后use [你的数据库名]
    EXEC   sp_changedbowner   'sa' 执行成功后,你再选择"数据库关系图"节点,时提示 此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建",选择是即可 就可以看到原先建的关系图了
    ----------------------------------------------------------------------------------------------------------------从服务器上作导入导出至本地机上,数据库中的表都在,可是表名前段的架构身份不是dbo了,而是服务器上数据库的库名这样架构身份不同了,程序运行就出问题了试过单个修改表,在sql2005的属性窗口可以更改架构者,可是N多表哪儿能手动改得过来呀!还请高手指点批量更改的方法在此谢过 
    SQL   Server2005可以使用系统存储过程sp_changeobjectowner更改数据库对象的所有者   
        
    sp_changeobjectowner   '对象名(包括架构名)','新架构名'   
        
    批量修改请用:   
        
    方法一:使用游标   
        
    declare   @name   sysname   
    declare   csr1   cursor   
    for     
          select   TABLE_NAME   from   INFORMATION_SCHEMA.TABLES   
    open   csr1   
        
    FETCH   NEXT   FROM   csr1   INTO   @name   
    while   (@@FETCH_STATUS=0)   
          BEGIN   
    SET   @name='原架构名.'+@name   
                      EXEC   SP_ChangeObjectOwner   @name,   '新架构名'   
        fetch   next   from   csr1   into   @name   
          END   
    CLOSE   csr1   
    DEALLOCATE   csr1   
        
    方法二:使用系统存储过程sp_MSforeachtable   
    EXEC   sp_MSforeachtable   @command1="EXEC   SP_ChangeObjectOwner   '?','新架构名'"
    ----------------------------------------------------------------------------------------------------------------
    在sql server 2005数据库中更改数据架构 
    在数据库testDB中存在架构A及用户A,现将testDB数据库所属的用户由A改为B,同时删除用户A;架构也由A改为B,删除架构A,操作如下:1创建用户B,再创建架构B;
    2将架构A的权限赋给用户B,取消用户A拥有架构A的权限,删除用户A;
    3将数据库的所有属于架构A的对象改为架构B,代码如下:
    ALTER SCHEMA [新架构名] TRANSFER 旧架构名.[数据库中的对象表或视图或存储过程]ALTER SCHEMA [B] TRANSFER A.[对象1]
    ALTER SCHEMA [B] TRANSFER A.[对象2]
    ALTER SCHEMA [B] TRANSFER A.[对象n]
    4删除架构A
     
      

  3.   

    1.直接附加数据库,不要用备份还原.2.或者直接用sa登录你的sql server,然后再尝试恢复数据库.
      

  4.   

    使用还原数据库,需要重新设定这个数据库的login 和shema.