数据库还原问题 使用shell调用sql server 的工具. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以调用SQL DMO,它可以实现大部分的数据库的功能,用它可以做出自己的数据库备份和还原的工具。 曾经有一本关于SQL server的书中给出了VB 我记得SQL server里的数据都是以文件形式储存的,直接考过去就行吧 load/restore database xxx from ... 看看这个也许会你帮助,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'不过请小心使用! 示例说明 所有的示例均假定已执行了完整数据库备份。A. 还原完整数据库说明 MyNwind 数据库仅供举例说明。下例显示还原完整数据库备份。RESTORE DATABASE MyNwind FROM MyNwind_1B. 还原完整数据库备份和差异备份下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。RESTORE DATABASE MyNwind FROM MyNwind_1 WITH NORECOVERYRESTORE 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 NORECOVERYRESTORE LOG MyNwind FROM MyNwindLog1 WITH NORECOVERYRESTORE 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'GOUSE pubsGOUPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'PC%'GOCOMMIT TRANSACTION RoyaltyUpdateGO--Time passes. Regular database --and log backups are taken.--An error occurs.USE masterGORESTORE DATABASE pubsFROM Pubs1WITH FILE = 3, NORECOVERYGORESTORE LOG pubs FROM Pubs1 WITH FILE = 4, STOPATMARK = 'RoyaltyUpdate' 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();//完全备份与差分备份均成功但还原失败。能不能帮忙调一下,我愿意给你分。谢谢!! 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(); sunchunqian(sunchunqian)请看:还原数据库操作,不管用SQL语句还是在企业管理器中操作都应该指明数据库文件的路径,用SQL语句还原用WITH MOVE ;用企业管理器还原需在还原操作的第二页选择路径;顺便说一下;如果你不指定数据库路径,系统按备份时的数据库路径还原,如果路径不存在则出错!!!!! 如何控制条码抢 delphi dbgrid 跳转行 请问Delphi怎么和网络上的orcale数据库连接? 串口和端口的通信,用那种方式较好?欢迎高手来指点一下 在DBGrid中如何给活动单元行加上特殊的背景色啊。就是一行显亮显示,急,谢谢了! 寻求女友项目 急,ADO,换台机子连不上数据库 delphibbs怎么不能用了? 为什么 如何用循环访问Form上的所有Edit 拷贝为什么不能覆盖原来的文件夹?(关于THFileOpstruct) 不用报表控件如何实现打印预览?
@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'不过请小心使用!
说明 所有的示例均假定已执行了完整数据库备份。
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'
我的程序使用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();
//完全备份与差分备份均成功但还原失败。
能不能帮忙调一下,我愿意给你分。
谢谢!!
还原是这样写的:
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();
还原数据库操作,不管用SQL语句还是在企业管理器中操作都应该指明数据库文件的路径,用SQL语句还原用WITH MOVE ;用企业管理器还原需在还原操作的第二页选择路径;
顺便说一下;如果你不指定数据库路径,系统按备份时的数据库路径还原,如果路径不存在则出错!!!!!