我们公司给客户的数据库,每次都是,首先导出表结构.然后用BCP导出所有数据.
在客户的机器上面,先建立数据库,然后建立登陆用户.接着表结构,接着BCP.
现在我想能不能直接就把数据库分离了,或者用BAK文件来代替这个过程.
但是错误就在这里产生了,我把别人机器的数据库附加或者还原到我的机器上的时候就出问题了.数据库原来
名称           登陆名              数据库访问
Guest                             通过组成员资格
dbo            aj120                  许可
ak120          ak120                  许可
数据库过来
名称           登陆名              数据库访问
Guest                             通过组成员资格
dbo               sa                  许可
ak120                                 许可或者
dbo               ak120               许可
ak120                                 许可正确的 是
dbo               sa                  许可
ak120            ak120                许可
附加数据库的时候,在指定数据库所有者的时候,我是左右都错.选择dbo就是第二种情况,选择ak120就是第二种情况.早上,本来想通过这个来完成以前的工作.没有想到,现在都没有弄好。最后还是用原来的办法做到了.因为耽误时间被我们总工骂了N个狗*和白*.人家是个直人,就当着我的面骂.实在是要是不是脸厚,早就死了.\大家帮忙啊!!!有建议也可以.

解决方案 »

  1.   


    你光这个把应用数据库的bak文件恢复到用户是不行的。
    因为你创新的登录是放在master库里的!如果你真的要这样做,必须也要用你的master库去恢复用户master库!是先恢复master库还是先附加新的数据库的话,你自己可以试试。
      

  2.   

    建议这样,你把生成登录和用户写成T-SQL语句,在恢复完数据库的bak文件后,再执行这些T-SQL语句来生成一下登录和用户。
      

  3.   

    dbo            aj120                  许可
    ak120          ak120                  许可
    可以这样子吗?
    不会提示:ak120已经在另一个用户名下拥有帐户?
    主要是附加数据库后出现的用户名与登陆名映射的问题.
    执行相关T-SQL语句应该就可以解决问题了.--使用RollSystem数据库
    USE RollSystem
    GO
    --创建登陆用户,设置登陆名,密码,默认登陆数据库
    EXEC sp_addlogin 'ak120','123456','RollSystem'
    GO
    --在创建的登陆与已经存在的数据库用户间建立映射关系,其中数据库用户已经分配到某一数据库角色中。
    EXEC sp_change_users_login 'Update_One','ak120','ak120'
    GO

    EXEC sp_change_users_login 'Update_One','sa','ak120'
    GO
      

  4.   

    楼上执行错误:
    服务器: 消息 911,级别 16,状态 1,行 2
    未能在 sysdatabases 中找到数据库 'RollSystem' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了名称。