环境:C#.net(2005)  SQLSERVER XP
备份数据
 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        }
 


恢复数据
    //连接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();
        }
 


备份到本地: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就可以了