当前位置: 代码迷 >> PB >> 数据库的整体操作,该如何处理
  详细解决方案

数据库的整体操作,该如何处理

热度:27   发布时间:2016-04-29 05:57:36.0
数据库的整体操作
开发了一个计算软件。现在pb通过数据源连接了一个确定的数据库。遇到一个问题,算过一次以后,再算第二次,第一次的数据就没了。感觉如果修改数据库的话,各种改动工作量可能比较大。可不可以在pb里编程,在前台实现以下功能:
1.在sqlserver里附加数据库,和前台连接
2.将数据库文件制作副本,然后附加这个副本,和前台连接
3.将正在连接的数据库脱机,然后另存为数据文件。

------解决方案--------------------
数据库的备份与恢复

--sql 1备份pubs数据库到c:\pubs.bak
BACKUP 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-SERVER2000数据库 
 
如何在PB 中备份 SQL SERVER 2000 的数据库?
设置备份设备:
/****************************************************************/
string ls_execSql

ls_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_execSql

ls_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_execSql

ls_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 
 
  相关解决方案