
远程备份要注意权限的问题,普通的访问帐户没有备份和还原的权限,最好用sa的帐户,并且程序访问的帐户必须添加到远程机器的系统内
你说的远程备份到本地是不可能的,你只有开放远程某个文件夹加入你的特殊访问帐户权限
最好直接用远程桌面,这样最方便
方法一(不使用SQLDMO):
///
///备份方法
///
SqlConnection conn = new SqlConnection("Server=;Database=master;User ID=sa;Password=sa;");
SqlCommand cmdBK = new SqlCommand();
cmdBKCommandType = CommandTypeText;
cmdBKConnection = conn;
cmdBKCommandText = @"backup database test to disk='C:\ba' with init";
try
{
connOpen();
cmdBKExecuteNonQuery();
MessageBoxShow("Backup successed");
}
catch(Exception ex)
{
MessageBoxShow(exMessage);
}
finally
{
connClose();
connDispose();
}
///
///还原方法
///
SqlConnection conn = new SqlConnection("Server=;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
connOpen();
//KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECTspidFROMsysprocesses ,sysdatabases WHEREsysprocessesdbid=sysdatabasesdbid AND sysdatabasesName='test'", conn);
SqlDataReader dr;
dr = cmdExecuteReader();
ArrayList list = new ArrayList();
while(drRead())
{
listAdd(drGetInt16(0));
}
drClose();
for(int i = 0; i < listCount; i++)
{
cmd = new SqlCommand(stringFormat("KILL {0}", list[i]), conn);
cmdExecuteNonQuery();
}
SqlCommand cmdRT = new SqlCommand();
cmdRTCommandType = CommandTypeText;
cmdRTConnection = conn;
cmdRTCommandText = @"restore database test fromdisk='C:\ba'";
try
{
cmdRTExecuteNonQuery();
MessageBoxShow("Restore successed");
}
catch(Exception ex)
{
MessageBoxShow(exMessage);
}
finally
{
connClose();
}
方法二(使用SQLDMO):
///
///备份方法
///
SQLDMOBackup backup = new SQLDMOBackupClass();
SQLDMOSQLServer server = new SQLDMOSQLServerClass();
//显示进度条
SQLDMOBackupSink_PercentCompleteEventHandler progress = new SQLDMOBackupSink_PercentCompleteEventHandler(Step);
backupPercentComplete += progress;
try
{
serverLoginSecure = false;
serverConnect("", "sa", "sa");
backupAction = SQLDMOSQLDMO_BACKUP_TYPESQLDMOBackup_Database;
backupDatabase = "test";
backupFiles = @"D:\test\myProg\backupTest";
backupBackupSetName = "test";
backupBackupSetDescription = "Backup the database of test";
backupInitialize = true;
backupSQLBackup(server);
MessageBoxShow("Backup successed");
}
catch(Exception ex)
{
MessageBoxShow(exMessage);
}
finally
{
serverDisConnect();
}
thispbDBValue = 0;
///
///还原方法
///
SQLDMORestore restore = new SQLDMORestoreClass();
SQLDMOSQLServer server = new SQLDMOSQLServerClass();
//显示进度条
SQLDMORestoreSink_PercentCompleteEventHandler progress = new SQLDMORestoreSink_PercentCompleteEventHandler(Step);
restorePercentComplete += progress;
//KILL DataBase Process
SqlConnection conn = new SqlConnection("Server=;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
connOpen();
SqlCommand cmd = new SqlCommand("SELECTspid FROMsysprocesses ,sysdatabases WHEREsysprocessesdbid=sysdatabasesdbid AND sysdatabasesName='test'", conn);
SqlDataReader dr;
dr = cmdExecuteReader();
ArrayList list = new ArrayList();
while(drRead())
{
listAdd(drGetInt16(0));
}
drClose();
for(int i = 0; i < listCount; i++)
{
cmd = new SqlCommand(stringFormat("KILL {0}", list[i]), conn);
cmdExecuteNonQuery();
}
connClose();
try
{
serverLoginSecure = false;
serverConnect("", "sa", "sa");
restoreAction = SQLDMOSQLDMO_RESTORE_TYPESQLDMORestore_Database;
restoreDatabase = "test";
restoreFiles = @"D:\test\myProg\backupTest";
restoreFileNumber = 1;
restoreReplaceDatabase = true;
restoreSQLRestore(server);
MessageBoxShow("Restore successed");
}
catch(Exception ex)
{
MessageBoxShow(exMessage);
}
finally
{
serverDisConnect();
}
thispbDBValue = 0;linux系统下使用脚本定时备份数据库,代码如下:
#!/bin/bash
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第
#18行,则默认以tag的方式备份
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxxtgz
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home/wang/>楼主您好
有礼了
我是专业的IDC服务器工作人员,我来帮帮您
不知道您的服务器是不是中文系统?
我说下windows 下的MYSQL备份 *** 作吧:
具体来说,我们若需利用任务计划程序自动运行则应执行如下步骤:
1单击“开始”按钮,然后依次选择“程序”→“附件”→“系统工具”→“任务计划”(或者是“设置”→“控制面板”→“任务计划”),启动Windows 2000的任务计划管理程序。
2在“任务计划”窗口中双击“添加任务计划”图标,启动系统的“任务计划向导”,然后单击“下一步”按钮,在给出的程序列表中选择需要自动运行的应用程序,然后单击“下一步”按钮。
设置适当的任务计划名称并选择自动执行这个任务的时间频率(如每天、每星期、每月、一次性、每次启动计算机时、每次登录时等),然后单击“下一步”按钮。
此时系统将会要求用户对程序运行的具体时间进行设置,如几号、几点钟、哪几个时间段才能运行等,我们只需根据自己的需要加以设置即可。
4接下来系统将会要求用户设置适当的用户名及密码(如图5所示),以便系统今后能自动加以运行。
5最后,我们只需单击“完成”按钮即可将相应任务添加到Windows 2000的任务计划程序中,此后它就会自动“记住”这个任务,一旦系统时间及相关条件与用户设置的计划相符,它就会自动调用用户所指定的应用程序,十分方便(每次启动Windows 2000的时候,任务计划程序都会自动启动,并在后台运行,确保用户的计划能够按时执行)。
现在我们来测试一下刚才所建的任务是否成功,鼠标右键单击“php”程序图标(如图6所示),在d出的菜单里面选择“运行”。一般情况下程序图标只要这样激活运行就可以正常启动。如果运行失败可查看用户和密码是否设置正确,还有确定“Task Scheduler”服务是否已启动,本人当初就是为了节省系统资源把它关掉了导致运行失败,害我找了大半天。另外也可从“系统日志”里查看到底是什么原因造成运行失败的。
好了,讲了这么多任务计划的应用,现在我们切入正题,下面将介绍两个例子:
一、让PHP定时运行吧!
1、 编辑如下代码,并保存为testphp:
<php
$fp = @fopen("testtxt", "a+");
fwrite($fp, date("Y-m-d H:i:s") " 让PHP定时运行吧!\n");
fclose($fp);
>
2、添加一个任务计划,在(如图2所示)这一步输入命令:D:\php4\phpexe -q D:\php4\testphp
3、时间设置为每隔1分钟运行一次,然后运行这个任务。
4、现在我们来看看d:\php4\testtxt文件的内容时候是否成功。如果内容为如下所示,那么恭喜你成功了。
2003-03-03 11:08:01 让PHP定时运行吧!
2003-03-03 11:09:02 让PHP定时运行吧!
2003-03-03 11:10:01 让PHP定时运行吧!
2003-03-03 11:11:02 让PHP定时运行吧!
二、让MYSQL实现自动备份变成可能!
1、编辑如下代码,并保存为backupphp,如果要压缩可以拷贝一个rarexe:
<php
if ($argc != 2 || in_array($argv[1], array('--help', '-'))) {
>
backup Ver 001, for Win95/Win98/WinNT/Win2000/WinXP on i32
Copyright (C) 2000 ptker All rights reserved
This is free software,and you are welcome to modify and redistribute it
under the GPL license
PHP Shell script for the backup MySQL database
Usage: <php ech备份:
exp 用户名/密码@要连接的远程计算机IP/要备份的远程数据库名称 file=文件路径
注:此用户必须拥有dba的权限
举例:
exp hom/hom@192168514/qa file=d:\aa1dmp
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)