问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql server客户端损坏如何备份数据

发布网友 发布时间:2022-05-05 12:21

我来回答

3个回答

热心网友 时间:2022-06-27 12:23

手头上只有C#的代码,不知道对你有没有帮助
远程备份要注意权限的问题,普通的访问帐户没有备份和还原的权限,最好用sa的帐户,并且程序访问的帐户必须添加到远程机器的系统内
你说的远程备份到本地是不可能的,你只有开放远程某个文件夹加入你的特殊访问帐户权限
最好直接用远程桌面,这样最方便

方法一(不使用SQLDMO):

///
///备份方法
///
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;");

SqlCommand cmdBK = new SqlCommand();
cmdBK.CommandType = CommandType.Text;
cmdBK.Connection = conn;
cmdBK.CommandText = @"backup database test to disk='C:\ba' with init";

try
{
conn.Open();
cmdBK.ExecuteNonQuery();
MessageBox.Show("Backup successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
conn.Dispose();
}

///
///还原方法
///
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
conn.Open();

//KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL ", list[i]), conn);
cmd.ExecuteNonQuery();
}

SqlCommand cmdRT = new SqlCommand();
cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database test from disk='C:\ba'";

try
{
cmdRT.ExecuteNonQuery();
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}

方法二(使用SQLDMO):

///
///备份方法
///
SQLDMO.Backup backup = new SQLDMO.BackupClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//显示进度条
SQLDMO.BackupSink_PercentCompleteEventHandler progress = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
backup.PercentComplete += progress;

try
{
server.LoginSecure = false;
server.Connect(".", "sa", "sa");
backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
backup.Database = "test";
backup.Files = @"D:\test\myProg\backupTest";
backup.BackupSetName = "test";
backup.BackupSetDescription = "Backup the database of test";
backup.Initialize = true;
backup.SQLBackup(server);
MessageBox.Show("Backup successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
this.pbDB.Value = 0;

///
///还原方法
///
SQLDMO.Restore restore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//显示进度条
SQLDMO.RestoreSink_PercentCompleteEventHandler progress = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
restore.PercentComplete += progress;

//KILL DataBase Process
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL ", list[i]), conn);
cmd.ExecuteNonQuery();
}
conn.Close();

try
{
server.LoginSecure = false;
server.Connect(".", "sa", "sa");
restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
restore.Database = "test";
restore.Files = @"D:\test\myProg\backupTest";
restore.FileNumber = 1;
restore.ReplaceDatabase = true;
restore.SQLRestore(server);
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
this.pbDB.Value = 0;

热心网友 时间:2022-06-27 12:23

你应该是把系统数据库覆盖了,再重新装吧,装完只要附加非系统数据库就行了。

热心网友 时间:2022-06-27 12:24

在sqlserver启动年的情况把原本的data文件附加一下数据库就行了,直接覆盖过去是不行的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
《人类》最新txt全集下载 为啥动物只管交配,而人类却要结婚 为什么动物只交配,人类却要结婚 孩子玩智力铁环有哪些作用? dnf中进仓库说该游戏id无权限是什么回事?怎么解决啊? DNF怎样解决此ID正在游戏中 重新恢复电脑系统win10电脑更新win10系统后怎么恢复原来的系统 win10电脑怎么还原系统win10系统怎么恢复出厂设置 五一去衡阳旅游,怎么玩比较好? 百理王葡萄素多少钱 花儿全国50强有谁 找找一个姓张的女孩名字,三个字的,1996年12月29号属鼠的,爸爸属马、妈妈属狗、妹妹属蛇。 本人姓张,求一女孩名字,2013阴历二月出生。请各位帮忙想想,谢谢! 微法交通法第97条扣分吗 龙女取名:2012年3月25日凌晨2点11分出生,姓张,最好名字以天字结尾,给出出主意吧。 2010花儿朵朵50强的一号是谁~~ 求各位帮忙给选择个好听的名字吧。。。 山西临猗农商银行的张馨天谁认识,请告诉我一下。最好有联系方式。 花儿朵朵全国50名单 花儿朵朵全国50强名单 谁知道免费TXT手机电子书网站能下载全书的 求一个手机看txt电子书的软件 要免费的 谢谢了 请哪位朋友能告诉我一些免费下载TXT电子书的手机网站 利路修全国散步巡演第五站长沙达成!为何他这么向往自由? 利路修飞奔下班,他有哪些迫不及待下班的表现? 利路修真的在很努力地防爆自己了,采访花絮:我一秒也不想干了!你怎么看? 如何让银行卡余额凭空多出八位数 利路修在《创造营》决赛上翻白眼,他是受了什么刺激? 利路修下班是什么梗? 甘望星回复利路修高仿号,后来他是否知道这是利路修高仿号呢? 拯救者R7000P 性能模式没反应 愚公移山跟三牛精神是什么意思 南京*纱窗,南京哪里有做纱窗,南京纱窗批发价格,*纱窗怎么清洗?我们家以前的老化了。准备换新的了 纱窗 隐形纱窗 南京哪里有做隐形纱窗?价格多少? 南京哪家做金刚网防盗纱窗 纱窗 隐形纱窗 南京哪里有做隐形纱窗?价格多少 纱窗 隐形纱窗 南京哪里有做隐形纱窗?价格多少 南京哪里有做隐形纱窗?价格多少?质量如何? 用法和存放清洗方法现在告诉你,你用对美妆蛋了吗 南京纱窗一般什么价格?塑钢纱窗和隐形纱窗有什么区别,哪个好? 南京隐形纱窗什么牌子好,价格怎样? excel2007中如何将插入的图表的坐标轴调换 也就是把横轴上的参数和纵轴上的参数对调! 我电话被对方拉黑了怎样才能打进去电话? 怎么设qq小号 想知道今年杭州的立秋是几号是几点几分呢? 怎么注册QQ小号? 历年入春入夏入秋入冬最早和最晚的城市都是哪些?分别是什么时候? 明天2021年10月11日杭州入秋,那么温州什么时候入秋呢?温州的夏天什么时候结束 天猫超市购物卡为什么是坑 天猫超市购物卡已经绑定了为什么付款的时候还需要花呗?