每月我都需要做一次如下工作:
1.将机器A上的某数据库[MyData]利用SQL Server的备份数据库功能,将该库备份成一个文件如MyData.bak
2.通过直连线,连接机器A与机器B,出于安全考虑,平时A与B是断开的
3.通过网络将此文件[MyData.bak]复制到机器B上
4.在机器B上,数据库MyData处于激活状态,暂时没人访问,在机器B上将MyData.bak文件强行恢复成MyData数据库
5.断开A与B的连接
请问如何通过SQL语句序列或存贮过程等来实现

解决方案 »

  1.   

    平时A与B是断开的
    通过SQL语句序列或存贮过程等实现不了
      

  2.   

    建立信任连接:Security-->Linked Servers点右键就可以建立信任连接了。。
      

  3.   

    拷贝a.mdf , a.ldf
    用sp_attach_dbEXEC 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.   

    在机器B上当数据库MyData处于激活状态时,能否从MyData.bak还原后将数据库MyData强制覆盖呢?
      

  5.   

    借用一下:新建作业,调用存储过程--在sql中映射一下就可以了
    exec master..xp_cmdshell 'net use z: \\yizhi\D$ "密码" /user:yizhi\administrator'/*--说明:
    exec master..xp_cmdshell 'net use z: \\xz\c$ "密码" /user:xz\administrator'z:是映射网络路径对应本机的盘符,与下面的备份对应
    \\xz\c$是要映射的网络路径xz\administrator
    xz是远程的计算机名,
    administrator是登陆的用户名
    密码 面指定的administrator用户的密码
    --*/--备份;with init覆盖|noinit添加
    backup database 库名 to disk='E:\H_BACKUP.bak' with init--COPY
    exec master..xp_cmdshell 'copy E:\H_BACKUP.bak z:'--删除(这句可以去掉)
    --exec master..xp_cmdshell 'del E:\H_BACKUP.bak'--完成后删除映射
    exec master..xp_cmdshell 'net use z: /delete'