首页 新闻 会员 周边

sql server 2005备份

0
悬赏园豆:10 [已解决问题] 解决于 2013-07-31 10:11

最近开发了一个系统,客户要求有数据库备份还原的功能,我在网上找了一段代码,可以用,但是现在把程序放在购买的空间上之后,备份功能不能使用了,提示没有权限。

这是我备份的代码,求高手指点

//获取配置文件中sql数据库名 
            string dbName = System.Configuration.ConfigurationManager.AppSettings["dbName"];
            string name = fileName;//dbName + DateTime.Now.ToString("yyyyMMddHHmmss");
            string procname;
            string sql;
            //创建连接对象 
            SqlConnection conn = new SqlConnection(Public.ConnectionString);
            conn.Open(); //打开数据库连接
            //删除逻辑备份设备,但不会删掉备份的数据库文件 
            procname = "sp_dropdevice";
            SqlCommand sqlcmd1 = new SqlCommand(procname, conn);
            sqlcmd1.CommandType = CommandType.StoredProcedure;
            SqlParameter sqlpar = new SqlParameter();
            sqlpar = sqlcmd1.Parameters.Add("@logicalname", SqlDbType.VarChar, 20);
            sqlpar.Direction = ParameterDirection.Input;
            sqlpar.Value = dbName;
            sqlcmd1.ExecuteNonQuery();
            //创建逻辑备份设备 
            procname = "sp_addumpdevice";
            SqlCommand sqlcmd2 = new SqlCommand(procname, conn);
            sqlcmd2.CommandType = CommandType.StoredProcedure;
            sqlpar = sqlcmd2.Parameters.Add("@devtype", SqlDbType.VarChar, 20);
            sqlpar.Direction = ParameterDirection.Input;
            sqlpar.Value = "disk";
            sqlpar = sqlcmd2.Parameters.Add("@logicalname", SqlDbType.VarChar, 20);//逻辑设备名 
            sqlpar.Direction = ParameterDirection.Input;
            sqlpar.Value = dbName;
            sqlpar = sqlcmd2.Parameters.Add("@physicalname", SqlDbType.NVarChar, 260);//物理设备名 
            sqlpar.Direction = ParameterDirection.Input;
            sqlpar.Value = backupFolder + name + ".bak";
            try
            {
                int i = sqlcmd2.ExecuteNonQuery();
            }
            catch (Exception err)
            {
                string str = err.Message;
            }
            //备份数据库到指定的数据库文件(完全备份) 
            sql = "BACKUP DATABASE " + dbName + " TO " + dbName + " WITH INIT";
            SqlCommand sqlcmd3 = new SqlCommand(sql, conn);
            sqlcmd3.CommandType = CommandType.Text;
            try
            {
                sqlcmd3.ExecuteNonQuery();
            }
            catch (Exception err)
            {
                string str = err.Message;
                conn.Close();
                return false;
            }
            conn.Close();//关闭数据库连接 
            return true;
多啦A梦的弟弟的主页 多啦A梦的弟弟 | 初学一级 | 园豆:46
提问于:2013-06-06 19:15
< >
分享
最佳答案
0

空间上没有备份权限很正常, 一点 空间的没一个资源都是要收费的,比如你在你的数据库新建表他不会提示没有权限,但是你要在你的数据库意外去建数据库,就需要占用空间资源,就不会给你权限,这个要和空间商联系,代码没问题

收获园豆:10
90后1场梦 | 菜鸟二级 |园豆:244 | 2013-06-07 11:19

哥,不能从代码上来解决吗

多啦A梦的弟弟 | 园豆:46 (初学一级) | 2013-06-07 15:13

@多啦A梦的弟弟: 

 

如果从代码上让你能在别人的服务器上随意写入文件,那这个服务器早就废了

_沫尘 | 园豆:204 (菜鸟二级) | 2013-06-08 09:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册