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

C#.NET SQL数据库备份/还原问题

发布网友 发布时间:2022-04-07 20:31

我来回答

4个回答

懂视网 时间:2022-04-08 00:52

1、 SQL Server配置管理器,双击“TCP/IP”

技术分享

TCP/IP设置

技术分享

只设置最下面的IPALL的TCP端口。

技术分享

确定后重启SQL Server服务,打开SQL Server Management Studio,服务器名称输入127.0.0.1[实例名],端口号,端口号就是刚才设置的端口号。

2、 网络设置,针对Windows Server 2008。

控制面板->网络和共享中心 自定义

技术分享

技术分享

3、 防火墙

控制面板->Windows防火墙,例外 添加刚才设定的sql server端口。

因为数据库正在使用,所以无法获得对数据库的独占访问权

标签:

热心网友 时间:2022-04-07 22:00

需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程(结束进程):
  
  create proc killspid (@dbname varchar(20))
  as
  begin
  declare @sql nvarchar(500)
  declare @spid int
  set @sql='declare getspid cursor for
  select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
  exec (@sql)
  open getspid
  fetch next from getspid into @spid
  while @@fetch_status<>-1
  begin
  exec('kill '+@spid)
  fetch next from getspid into @spid
  end
  close getspid
  deallocate getspid
  end
  GO
  
  在还原之前先执行这个存储过程,需要传递dbname,就是你的数据库的名字。下边是类的原代码:(web.config里的数据库连接字符串是constr)
  
  using System;
  
  using System.Configuration;
  
  using System.Data.SqlClient;
  
  using System.Data;
  
  namespace web.base_class
  
  {
  
  /// <summary>
  
  /// DbOper类,主要应用SQLDMO实现对Microsoft SQL Server数据库的备份和恢复
  
  /// </summary>
  
  public class DbOper
  
  {
  
  private string server;
  
  private string uid;
  
  private string pwd;
  
  private string database;
  
  private string conn;
  
  /// <summary>
  
  /// DbOper类的构造函数
  
  /// </summary>
  
  public DbOper()
  
  {
  
  conn=System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();
  
  server=cut(conn,"server=",";");
  
  uid=cut(conn,"uid=",";");
  
  pwd=cut(conn,"pwd=",";");
  
  database=cut(conn,"database=",";");
  
  }
  
  public string cut(string str,string bg,string ed)
  
  {
  
  string sub;
  
  sub=str.Substring(str.IndexOf(bg)+bg.Length);
  
  sub=sub.Substring(0,sub.IndexOf(";"));
  
  return sub;
  
  }
  
  
  
  /// <summary>
  
  /// 数据库备份
  
  /// </summary>
  
  public bool DbBackup(string url)
  
  {
  
  SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
  
  SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
  
  try
  
  {
  
  oSQLServer.LoginSecure = false;
  
  oSQLServer.Connect(server,uid, pwd);
  
  oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
  
  oBackup.Database = database;
  
  oBackup.Files = url;//"d:\Northwind.bak";
  
  oBackup.BackupSetName = database;
  
  oBackup.BackupSetDescription = "数据库备份";
  
  oBackup.Initialize = true;
  
  oBackup.SQLBackup(oSQLServer);
  
  return true;
  
  }
  
  catch
  
  {
  
  return false;
  
  throw;
  
  }
  
  finally
  
  {
  
  oSQLServer.DisConnect();
  
  }
  
  }
  
  /// <summary>
  
  /// 数据库恢复
  
  /// </summary>
  
  public string DbRestore(string url)
  
  {
  
  if(exepro()!=true)//执行存储过程
  
  {
  
  return "操作失败";
  
  }
  
  else
  
  {
  
  SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
  
  SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
  
  try
  
  {
  
  oSQLServer.LoginSecure = false;
  
  oSQLServer.Connect(server, uid, pwd);
  
  oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
  
  oRestore.Database = database;
  
  oRestore.Files = url;//@"d:\Northwind.bak";
  
  oRestore.FileNumber = 1;
  
  oRestore.ReplaceDatabase = true;
  
  oRestore.SQLRestore(oSQLServer);
  
  return "ok";
  
  }
  
  catch(Exception e)
  
  {
  
  return "恢复数据库失败";
  
  throw;
  
  }
  
  finally
  
  {
  
  oSQLServer.DisConnect();
  
  }
  
  }
  
  }
  
  private bool exepro()
  
  {
  
  SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
  
  SqlCommand cmd = new SqlCommand("killspid",conn1);
  
  cmd.CommandType = CommandType.StoredProcere;
  
  cmd.Parameters.Add("@dbname","port");
  
  try
  
  {
  
  conn1.Open();
  
  cmd.ExecuteNonQuery();
  
  return true;
  
  }
  
  catch(Exception ex)
  
  {
  
  return false;
  
  }
  
  finally
  
  {
  
  conn1.Close();
  
  }
  
  }
  
  }
  
}

热心网友 时间:2022-04-07 23:18

USE master
RESTORE DATABASE company FROM DISK= '备份数据库的地址' WITH STATS 在查询分析器中执行以上语句,地址是数据库备份文件存放的路径地址。Good Luck!

热心网友 时间:2022-04-08 00:53

上你们发个成功的案例啊,尽在那里讲些有的没的,这些谁不会讲啊!!!!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 急!求形容花的四字词语! 物业春暖花开的作文 谁是海子?“面朝大海,春暖花开”? 形容春天花开的成语 形容春天花开的成语 给一篇以 春暖花开 为题的记叙文,水平只要中等就行的不要写的太好 春天花开的词语 春天花开的词语 您正在使用的浏览器版本过低,将不能正常浏览和使用 请升级IE10版本以上 谁知道形容“春、夏、秋、冬”的词语? 谁知道形容“春、夏、秋、冬”的词语? 解析《面朝大海,春暖花开》-海子 解析《面朝大海,春暖花开》-海子 高考报志愿时浏览器版本低于8.0可以吗 教师资格证面试网上报名会话失效什么意思 请帮我找10个关于春天的成语 海子——面朝大海.春暖花开 高考志愿填报中使用了IE10 系统还提示要使用ie8及以上的浏览器 是怎么回事啊 Excel 关于数据图标设计布局中怎么改变文字方向 锁边机四线是怎么穿的 地心护核者泰坦有几个 地心护核者天空泰坦多久刷一次 地心护核者 天空泰坦怎么下来 地心护核者天空泰坦多少血 地心护核者天空泰坦怎么刷新 地心护核者天空泰坦多久刷新一次 地心护核者天空泰坦怎么打第二次 地心护核者闪烁着亮光的大型物件怎么获得 地心守护者泰坦在哪 《重生之天空战记》txt下载在线阅读全文,求百度网盘云资源 FF14蛮神泰坦怎么打? viv0x7反应慢卡怎办? 时空猎人,刷魔晶。怎么刷。 时空猎人怎么做获得魔晶最多 沧生是什么 求主角老谋深算的玄幻小说, vivo x7plus卡怎么办? 天天象棋楚汉争霸47关怎么过? 天天象棋楚汉争霸第47关怎么过 第47关动态图详解 天天象棋闯关楚汉争霸攻略47关