如题:
环境:A、B计算机名不同,但在同一个域
不希望是用新建数据库、备份数据库、还原数据库的方式希望是把数据文件复制到B计算机简单操作,就可以实现在B计算机上与A计算机上的数据库环境一样。

解决方案 »

  1.   

    首先生成数据库脚本
    sql200企业管理器
    --注册远程服务器的实例
    --右键要导出到本地的数据库
    --所有任务
    --生成SQL脚本
    --常规里选择生成全部对象脚本
    --设置格式里,将"包含扩展属性"选上
    --选项中,将"编写数据库脚本"及"表脚本选项"中的内容全部选择上
    --其他所有的选项保持默认值--然后确定,将其保存成一个.sql文件这样你可以得到一个脚本文件, 而且这个脚本文件在你的本机查询分析器打开这个脚本文件, 连接到本机的sql server, 执行这个脚本创建一个结构与远程服务器一样的库
    最后将数据导出到本机
    sql200企业管理器
    --展开远程服务器的实例
    --右键要导出数据到本机的数据库
    --所有任务
    --导出数据
    --目标数据库,服务器选择本机的服务器,数据库选择前面面生成的数据库
    --然后选择"在两个SQL数据库之间复制数据和对象"
    --将"创建目的对象"的选择取消
    --最后完成.
      

  2.   

    如果只是计算机名不同, 磁盘结构可以一样(与数据库相关的目录可以保持一致就行了)那么, 最快的方法应该是这样:
    1. 保证A.B计算机的数据库版本, 包括补丁的版本完全一致
    2. 两者的sql安装目录(主要是数据文件目录)一致
    3. A计算机名改名, 改为和B计算机名一致(可选)
    4. 停止A, B计算机的sql服务
    5. 复制A计算机的所有数据库文件, 包含系统数据库的文件到B计算机
       覆盖B计算机上的相关数据文件(正常情况应该B计算机上只有系统数据库, 所以覆盖的也只有系统数据库的文件)
       覆盖前建议先备份
    6. 启动B计算机的sql服务
       这时候, 正常情况应该是所有的库都可用了, 如果个别不能用, 用分离再附加的方式处理一次, 实在不行, 单独从A备份, 再在B上还原
      

  3.   

    复制A计算机的所有数据库文件(*.mdf,*.ldf)到B计算机上的DATA目录下,然后在查询分析器里面使用sp_attach_db附加所有的数据库.下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs', 
       @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
       @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
      

  4.   

    上述方法我自己使用过, 所以应该是最快最有效的了.当然, 上述目录有一个限制, 就是要求源和目标的数据文件目录可以保持一致.另外, 如果你的数据库中有作业, 则如果源和目标计算机名的服务器名不同, 会导致作业无法正常启动, 需要修改 msdb.dbo.sysjobs 表中的 originating_server 列值, 使里面的值与现有的实例名一致
    另外, 第3步是可先的, 不改名也没有问题, 无论是否做这步, 在第6步完成后, 都需要执行下面的语句:
    EXEC sp_dropserver 'A计算机名', 'droplogins'
    GOEXEC sp_addserver 'B计算机名', 'LOCAL'否则你以后做 replication 会失败
      

  5.   

    B计算机名可以改回来是指什么啊?我没有让改B计算机名啊?
    不过, 对于A计算机名, 第3步你不做好了, 反正我自己用的时候, 发现改不改都没有关系的
      

  6.   

    先注册远程服务器,然后导入数据吧。从A-->B