数据库备份:
string sql;
string file;
file = "d:\backup\database.bak"sql = 'EXEC'+'('+"'USE master'"+')'
EXECUTE IMMEDIATE :sql ;
SQLCA.AutoCommit = TRUE
sql = "EXEC sp_addumpdevice  'disk'"+" , 'databasename' , "+" '"+file+"'"
EXECUTE IMMEDIATE : sql ;
sql ='BACKUP DATABASE databasename to databasename'
EXECUTE IMMEDIATE : sql ;
sql = "exec sp_dropdevice 'databasename'"
EXECUTE IMMEDIATE : sql ;
SQLCA.AutoCommit = false
sql = 'EXEC'+'('+"'USE databasename'"+')'
EXECUTE IMMEDIATE :sql ;
数据库恢复:
file = "d:\backup\database.bak"
sql = of_connectdb_master()
SQLCA.AutoCommit = TRUE
sql = "EXEC sp_addumpdevice  'disk'"+" , 'databasename' , "+" '"+file+"'"
EXECUTE IMMEDIATE : sql ;
sql = "EXEC sp_dboption @dbname = 'databasename', @optname = 'single user', @optvalue = true"
EXECUTE IMMEDIATE : sql ;
sql ='RESTORE DATABASE databasename FROM databasename'
EXECUTE IMMEDIATE : sql ;
sql = "EXEC sp_dboption @dbname = 'databasename', @optname = 'single user', @optvalue = false"
EXECUTE IMMEDIATE : sql ;
        sql = "exec sp_dropdevice 'databasename'"
EXECUTE IMMEDIATE : sql ;
SQLCA.AutoCommit = false
Disconnect Using sqlca;

解决方案 »

  1.   

    你用以下代码试试看://整个数据库备份SQL语句
      backup database name to disk='路径+文件名' with init
    //数据库中某个数据表的备份语句
      ADOQuery1.SQL.Add('EXEC master..xp_cmdshell'+'''bcp '+DataBaseName+'.dbo.'+TableName+' out '+路径+文件名+' -c -q -S"'+servername+'" -U"'+username+'" -P"'+password+'"''')
    //整个数据库恢复语句
      ADOQuery1.SQL.Add('Use master EXEC sp_dboption '''+DataBaseName+''','''+'single user'+''','''+'True''');
      ADOQuery1.SQL.Add('Restore database '+DataBaseName+' from disk='''+路径+文件名+'''');
      ADOQuery1.SQL.Add('EXEC sp_dboption '''+DataBaseName+''','''+'single user'+''','''+'False''');
    //数据库中某个数据表的恢复语句
      ADOQuery1.SQL.Add('EXEC master..xp_cmdshell'+'''bcp '+DataBaseName+'.dbo.'+TableName+' in '+路径+文件名+' -c -q -S"'+servername+'" -U"'+username+'" -P"'+password+'"''');