最近开发了一个系统,客户要求有数据库备份还原的功能,我在网上找了一段代码,可以用,但是现在把程序放在购买的空间上之后,备份功能不能使用了,提示没有权限。
这是我备份的代码,求高手指点
//获取配置文件中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梦的弟弟:
如果从代码上让你能在别人的服务器上随意写入文件,那这个服务器早就废了