使用shell调用sql server 的工具.

解决方案 »

  1.   

    你可以调用SQL DMO,它可以实现大部分的数据库的功能,用它可以做出自己的数据库备份和还原的工具。
      

  2.   

    曾经有一本关于SQL server的书中给出了VB
      

  3.   

    我记得SQL server里的数据都是以文件形式储存的,直接考过去就行吧
      

  4.   

    load/restore database xxx from ...
      

  5.   

    看看这个也许会你帮助,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'不过请小心使用!
      

  6.   

    示例
    说明  所有的示例均假定已执行了完整数据库备份。
    A. 还原完整数据库
    说明  MyNwind 数据库仅供举例说明。
    下例显示还原完整数据库备份。RESTORE DATABASE MyNwind 
       FROM MyNwind_1B. 还原完整数据库备份和差异备份
    下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。RESTORE DATABASE MyNwind
       FROM MyNwind_1
       WITH NORECOVERY
    RESTORE DATABASE MyNwind
       FROM MyNwind_1
       WITH FILE = 2C. 使用 RESTART 语法还原数据库
    下例使用 RESTART 选项重新启动因服务器电源故障而中断的 RESTORE 操作。-- This database RESTORE halted prematurely due to power failure.
    RESTORE DATABASE MyNwind
       FROM MyNwind_1
    -- Here is the RESTORE RESTART operation.
    RESTORE DATABASE MyNwind 
       FROM MyNwind_1 WITH RESTARTD. 还原数据库并移动文件
    下例还原完整数据库和事务日志,并将已还原的数据库移动到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。RESTORE DATABASE MyNwind
       FROM MyNwind_1
       WITH NORECOVERY, 
          MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf', 
          MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
    RESTORE LOG MyNwind
       FROM MyNwindLog1
       WITH RECOVERYE. 使用 BACKUP 和 RESTORE 创建数据库的复本
    下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。 BACKUP DATABASE Northwind 
       TO DISK = 'c:\Northwind.bak'
    RESTORE FILELISTONLY 
       FROM DISK = 'c:\Northwind.bak'
    RESTORE DATABASE TestDB 
       FROM DISK = 'c:\Northwind.bak'
       WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
       MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
    GOF. 使用 STOPAT 语法还原到即时点和使用多个设备进行还原
    下例将数据库还原到其在 1998 年 4 月 15 日中午 12 点时的状态,并显示涉及多个日志和多个备份设备的还原操作。RESTORE DATABASE MyNwind
       FROM MyNwind_1, MyNwind_2
       WITH NORECOVERY
    RESTORE LOG MyNwind
       FROM MyNwindLog1
       WITH NORECOVERY
    RESTORE LOG MyNwind
       FROM MyNwindLog2
       WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'G. 使用 TAPE 语法还原
    下例显示从 TAPE 备份设备还原完整数据库备份。RESTORE DATABASE MyNwind 
       FROM TAPE = '\\.\tape0'H. 使用 FILE 和 FILEGROUP 语法还原
    下例还原一个包含两个文件、一个文件组和一个事务日志的数据库。RESTORE DATABASE MyNwind
       FILE = 'MyNwind_data_1',
       FILE = 'MyNwind_data_2',
       FILEGROUP = 'new_customers'
       FROM MyNwind_1
       WITH NORECOVERY
    -- Restore the log backup.
    RESTORE LOG MyNwind
       FROM MyNwindLog1I. 将事务日志还原到标记处
    下例显示将事务日志还原到名为"RoyaltyUpdate"的标记处。BEGIN TRANSACTION RoyaltyUpdate 
       WITH MARK 'Update royalty values'
    GO
    USE pubs
    GO
    UPDATE roysched
       SET royalty = royalty * 1.10
       WHERE title_id LIKE 'PC%'
    GO
    COMMIT TRANSACTION RoyaltyUpdate
    GO
    --Time passes. Regular database 
    --and log backups are taken.
    --An error occurs.
    USE master
    GORESTORE DATABASE pubs
    FROM Pubs1
    WITH FILE = 3, NORECOVERY
    GO
    RESTORE LOG pubs
       FROM Pubs1
       WITH FILE = 4,
       STOPATMARK = 'RoyaltyUpdate'
      

  7.   

    zou5655(周围)兄:
        我的程序使用B示例:
        代码:
        //完全备份
        AnsiString filename = "d:\\tmp\\tmp\\011108.bak";
        qry->Close();
        qry->SQL->Text ="BACKUP DATABASE meifa TO DISK= '"
                +filename
                +"' STATS = 1";
        qry->ExecSQL(); 
        //差分备份
        AnsiString filename2 = "d:\\tmp\\tmp\\01110812.bak";    qry->Close();
        qry->SQL->Text ="BACKUP DATABASE meifa TO DISK= '"
                +filename2
                +"' WITH Differential ";
        qry->ExecSQL();
        //还原
        AnsiString filename = "d:\\temp\\temp\\011107.dat";
        qry->Close();
        qry->SQL->Text = "Restore database meifa From disk = '" + filename + "'     With NoRecovery";
        qry->ExecSQL();
        qry->Close();
        qry->SQL->Text =
        "Restore database meifa From '" + filename + "' WITH FILE = 2,Recovery";
        qry->ExecSQL();
    //完全备份与差分备份均成功但还原失败。
    能不能帮忙调一下,我愿意给你分。
    谢谢!!
      

  8.   

    SORRY
    还原是这样写的:
       qry->Close();
        qry->SQL->Text = "Restore database meifa From disk = '" + filename + "' With NoRecovery";
        qry->ExecSQL();
        qry->Close();    qry->SQL->Text =
        "Restore database meifa From disk = '" + filename + "',disk = '" +
         filename2 + "' WITH FILE = 2,Recovery";
        qry->ExecSQL();
      

  9.   

    sunchunqian(sunchunqian)请看:
    还原数据库操作,不管用SQL语句还是在企业管理器中操作都应该指明数据库文件的路径,用SQL语句还原用WITH MOVE ;用企业管理器还原需在还原操作的第二页选择路径;
    顺便说一下;如果你不指定数据库路径,系统按备份时的数据库路径还原,如果路径不存在则出错!!!!!