开发了一个计算软件。现在pb通过数据源连接了一个确定的数据库。遇到一个问题,算过一次以后,再算第二次,第一次的数据就没了。感觉如果修改数据库的话,各种改动工作量可能比较大。可不可以在pb里编程,在前台实现以下功能:
1.在sqlserver里附加数据库,和前台连接
2.将数据库文件制作副本,然后附加这个副本,和前台连接
3.将正在连接的数据库脱机,然后另存为数据文件。
------解决方案--------------------
数据库的备份与恢复
- SQL code
--sql 1备份pubs数据库到c:\pubs.bakBACKUP DATABASE [pubs] TO DISK = N'c:\pubs.bak'--sql 2 获取mast逻辑文件路径SELECT FileName FROM master..sysfiles WHERE Name = 'master'--sql3 获取备份文件的逻辑文件名及路径等RESTORE FILELISTONLY FROM DISK = N'c:\pubs.bak'--sql 4 还原到pubstmp数据库RESTORE DATABASE [pubstmp] FROM DISK = N'c:\pubs.bak' WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE , MOVE N'pubs' TO N'c:\program files\microsoft sql server\mssql\data\pubstmp.mdf', MOVE N'pubs_log' TO N'c:\program files\microsoft sql server\mssql\data\pubstmp.ldf' --其中'pubs','pubs_log'是'c:\pubs.bak'备份文件中的数据库逻辑文件名,--这个逻辑名在sql 3中获取,你可以在pb中用游标来获取,不懂在帮助中查Dynamic SQL Format 3的用法--'c:\program files\microsoft sql server\mssql\data\pubstmp.mdf'是还原数据库pubstmp逻辑文件存放路径--这个路径可以设置到master逻辑文件路径的同一个文件夹内,当然也可以自己设置到别的文件夹--sql 5 删除数据库--DROP DATABASE [pubstmp]
------解决方案--------------------
- SQL code
备份和恢复SQL-SERVER2000数据库 如何在PB 中备份 SQL SERVER 2000 的数据库?设置备份设备:/****************************************************************/string ls_execSqlls_execSql = "sp_addumpdevice 'disk','HC_JXC','C:\BACKUP\HC_JXC.bak'"execute immediate :ls_execSql using sqlca;if sqlca.sqlcode <> 0 then messagebox("设置设备","设备已经存在,不需要设置。")else messagebox("设置设备","设置设备成功!")end if/****************************************************************/数据库备份/****************************************************************/string ls_execSqlls_execSql = "backup database HC_JXC to HC_JXC"execute immediate :ls_execSql using sqlca;if sqlca.sqlcode <> 0 then messagebox("备份数据","数据备份失败,可能数据库正在使用,或者数据库没有连接!")else messagebox("备份数据","数据备份成功!")end if/****************************************************************/数据库恢复/****************************************************************/string ls_execSqlls_execSql = "use master restore database HC_JXC from HC_JXC"execute immediate :ls_execSql using sqlca;if sqlca.sqlcode <> 0 then messagebox("恢复数据","恢复数据失败,可能数据库正在使用,或者数据库没有连接!")else messagebox("恢复数据","恢复数据成功!")end if