环境:C#.net(2005) SQLSERVER XP
备份数据
恢复数据
备份到本地:cmdBK.CommandText = @"backup database Test to disk='C:\\backup\\ba' with init";
从本地恢复同样。
可能出现的错误:
数据库已经被使用 --- 使用杀死进程的那段程序杀掉相关数据库所有进程
没有Restore data权限 ---- 赋予用户DataBase Creator权限
没有执行kill进程的权限 ---- 赋予用户Process Administrator权限
相关资料:远程共享文件夹设置
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
SQLServer如果是Administrator启动的
那你的FileServer的Administrator密码必须与SQLServer的Administrator相同
但出于安全考虑一般不这样干
一般解决方法:
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具-->服务-->mssql项-->属性-->指定用户及密码)
5、\\192.168.*.*\文件夹\ShareBak.Bak就可以了
备份数据
1
//连接数据库
DBOperate.Createconnection();
2
SqlCommand cmdBK = new SqlCommand();
3
cmdBK.CommandType = CommandType.Text;
4
cmdBK.Connection = DBOperate.sqlConnection;
//执行远程备份,backup为远程共享文件夹,并赋予asp.net用户写权限。
5
cmdBK.CommandText = @"backup database Test to disk='\\192.168.1.103\\backup\\ba' with init";
6
7
try
8
{
9
cmdBK.ExecuteNonQuery();
10
//MessageBox.Show("Backup successed.");
11
}
12
catch
13
{
14
//MessageBox.Show(ex.Message);
15
}
16
finally
17
{
//关闭数据库
18
DBOperate.Closeconnection();
19
}
//连接数据库DBOperate.Createconnection();
2
SqlCommand cmdBK = new SqlCommand();3
cmdBK.CommandType = CommandType.Text;4
cmdBK.Connection = DBOperate.sqlConnection;//执行远程备份,backup为远程共享文件夹,并赋予asp.net用户写权限。
5
cmdBK.CommandText = @"backup database Test to disk='\\192.168.1.103\\backup\\ba' with init";6

7
try8
{9
cmdBK.ExecuteNonQuery();10
//MessageBox.Show("Backup successed.");11
}12
catch13
{14
//MessageBox.Show(ex.Message);15
}16
finally17
{//关闭数据库
18
DBOperate.Closeconnection();19
} 恢复数据
//连接master 数据库
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["MasterConnection"]);
conn.Open();

//杀掉数据库进程,要求操作者有Process Administrator权限
//KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='Doughty_BBS'", 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 {0}", list[i]), conn);
cmd.ExecuteNonQuery();
}

//从远程数据库恢复数据,要求操作员有DataBase Creator权限
SqlCommand cmdRT = new SqlCommand();
cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database Test from disk='\\192.168.1.103\\backup\\ba' ";

try
{
cmdRT.ExecuteNonQuery();
//MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
//MessageBox.Show(ex.Message);
Label2.Text = ex.Message.ToString();
}
finally
{
conn.Close();
}
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["MasterConnection"]);
conn.Open();
//杀掉数据库进程,要求操作者有Process Administrator权限
//KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='Doughty_BBS'", 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 {0}", list[i]), conn);
cmd.ExecuteNonQuery();
}
//从远程数据库恢复数据,要求操作员有DataBase Creator权限
SqlCommand cmdRT = new SqlCommand();
cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database Test from disk='\\192.168.1.103\\backup\\ba' ";
try
{
cmdRT.ExecuteNonQuery();
//MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
//MessageBox.Show(ex.Message);
Label2.Text = ex.Message.ToString();
}
finally
{
conn.Close();
} 备份到本地:cmdBK.CommandText = @"backup database Test to disk='C:\\backup\\ba' with init";
从本地恢复同样。
可能出现的错误:
数据库已经被使用 --- 使用杀死进程的那段程序杀掉相关数据库所有进程
没有Restore data权限 ---- 赋予用户DataBase Creator权限
没有执行kill进程的权限 ---- 赋予用户Process Administrator权限
相关资料:远程共享文件夹设置
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
SQLServer如果是Administrator启动的
那你的FileServer的Administrator密码必须与SQLServer的Administrator相同
但出于安全考虑一般不这样干
一般解决方法:
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具-->服务-->mssql项-->属性-->指定用户及密码)
5、\\192.168.*.*\文件夹\ShareBak.Bak就可以了
