想要在实时服务器上备份我的数据库 [英] Want to backup my database on the live server

查看:65
本文介绍了想要在实时服务器上备份我的数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想每天备份我的数据库,所以为此我尝试创建一个每天执行的脚本,并在我的托管服务器文件管理器文件夹中获取我的数据库备份。



为此我写了以下代码:





  var  backupFolderAbsPath = Request.MapPath( 〜/ Backup / sql / ); 
// 从配置文件中读取连接字符串
var connectionString = ConfigurationManager.ConnectionStrings [ enwonConnection]。ConnectionString;

// 从配置文件中读取备份文件夹(C:/ temp /)
var backupFolder = ConfigurationManager.AppSettings [ BackupFolder]的ToString();

var sqlConStrBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString) ;

// set backupfilename(你会得到类似:C:/ temp / MyDatabase -2013-12-07.bak)
// var backupFileName = String.Format ({0} {1} - {2} .bak,backupFolder,sqlConStrBuilder.InitialCatalog,DateTime.Now.ToString(yyyy-MM-dd));
var backupFileName = String .Format( {0} {1} - {2} .bak,backupFolderAbsPath,sqlConStrBuilder.InitialCatalog,DateTime.Now.ToString( yyyy-MM-dd));

使用 var connection = new System.Data.SqlClient.SqlConnection(sqlConStrBuilder.ConnectionString))
{
var query = String .Format( BACKUP DATABASE [{0}] TO DISK ='{ 1}'
sqlConStrBuilder.InitialCatalog,backupFileName);

使用 var command = new System.Data.SqlClient.SqlCommand(query,connection))
{
connection.Open();
command.ExecuteNonQuery();
}
}





但是它会转到command.ExecuteNonQuery()但是有一个错误< br $>


无法打开备份设备'  E:\HostingSpaces\seorank\enwon.com.au\wwwroot\Backup\sql\enwon-2016-04-27.bak'。操作系统错误 5 (访问 被拒绝。)。 
BACKUP DATABASE 异常终止。





请让我知道这个问题的解决方案。我如何使用MVC4进行此操作?



我尝试过:



var backupFolderAbsPath = Request.MapPath(〜/ Backup / sql /);

//从配置文件中读取连接字符串

var connectionString = ConfigurationManager.ConnectionStrings [ enwonConnection] .ConnectionString;



//从配置文件中读取备份文件夹(C:/ temp /)

var backupFolder = ConfigurationManager.AppSettings [BackupFolder]。ToString();



var sqlConStrBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);



//设置backupfilename(你会得到类似:C:/temp/MyDatabase-2013-12-07.bak)

// var backupFileName = String.Format({0} {1} - {2} .bak,backupFolder,sqlConStrBuilder.InitialCatalog,DateTime.Now.ToString(yyyy-MM-dd));

var backupFileName = String.Format({0} {1} - {2} .bak,backupFolderAbsPath,sqlConStrBuilder.InitialCatalog,DateTime.Now.ToString(yyyy-MM-dd));



using(var connection = new System.Data.SqlClient.SqlConnection(sqlConStrBuilder.ConnectionString))

{

var query = String.Format( BACKUP DATABASE [{0}] to DISK ='{1}',

sqlConStrBuilder.InitialCatalog,backupFileName);



using (var command = new System.Data.SqlClient.SqlCommand(query,connection))

{

connection.Open();

命令.ExecuteNonQuery();

}

}

解决方案

其实你的代码还可以。问题出在不同的层面:您(或者更确切地说是IIS使用的帐户)需要该文件夹的写入权限。

这通常通过服务器管理工​​具完成,您可以在其中设置这些权限。 / blockquote>

您的帐户没有足够的权限访问磁盘驱动器文件夹

授予服务器上备份文件夹的完全访问权限。


I want to backup my database everyday, so for that I am trying to create one script which executes everyday and get my database's backup on my hosting server file manager folder.

for that I have written following code:


var backupFolderAbsPath = Request.MapPath("~/Backup/sql/");
            // read connectionstring from config file
            var connectionString = ConfigurationManager.ConnectionStrings["enwonConnection"].ConnectionString;

            // read backup folder from config file ("C:/temp/")
            var backupFolder = ConfigurationManager.AppSettings["BackupFolder"].ToString();

            var sqlConStrBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);

            // set backupfilename (you will get something like: "C:/temp/MyDatabase-2013-12-07.bak")
            //var backupFileName = String.Format("{0}{1}-{2}.bak", backupFolder, sqlConStrBuilder.InitialCatalog, DateTime.Now.ToString("yyyy-MM-dd"));
            var backupFileName = String.Format("{0}{1}-{2}.bak", backupFolderAbsPath, sqlConStrBuilder.InitialCatalog, DateTime.Now.ToString("yyyy-MM-dd"));

            using (var connection = new System.Data.SqlClient.SqlConnection(sqlConStrBuilder.ConnectionString))
            {
                var query = String.Format("BACKUP DATABASE [{0}] TO DISK='{1}'",
                    sqlConStrBuilder.InitialCatalog, backupFileName);

                using (var command = new System.Data.SqlClient.SqlCommand(query, connection))
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                }
            }



But while it will goes to command.ExecuteNonQuery() there is an error of

Cannot open backup device 'E:\HostingSpaces\seorank\enwon.com.au\wwwroot\Backup\sql\enwon-2016-04-27.bak'. Operating system error 5(Access is denied.).
BACKUP DATABASE is terminating abnormally.



Please let me know the solution for this issue. How does I do this with MVC4?

What I have tried:

var backupFolderAbsPath = Request.MapPath("~/Backup/sql/");
// read connectionstring from config file
var connectionString = ConfigurationManager.ConnectionStrings["enwonConnection"].ConnectionString;

// read backup folder from config file ("C:/temp/")
var backupFolder = ConfigurationManager.AppSettings["BackupFolder"].ToString();

var sqlConStrBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);

// set backupfilename (you will get something like: "C:/temp/MyDatabase-2013-12-07.bak")
//var backupFileName = String.Format("{0}{1}-{2}.bak", backupFolder, sqlConStrBuilder.InitialCatalog, DateTime.Now.ToString("yyyy-MM-dd"));
var backupFileName = String.Format("{0}{1}-{2}.bak", backupFolderAbsPath, sqlConStrBuilder.InitialCatalog, DateTime.Now.ToString("yyyy-MM-dd"));

using (var connection = new System.Data.SqlClient.SqlConnection(sqlConStrBuilder.ConnectionString))
{
var query = String.Format("BACKUP DATABASE [{0}] TO DISK='{1}'",
sqlConStrBuilder.InitialCatalog, backupFileName);

using (var command = new System.Data.SqlClient.SqlCommand(query, connection))
{
connection.Open();
command.ExecuteNonQuery();
}
}

解决方案

Actually your code is OK. The problem is on a different level: you (or more precisely the account used by IIS) needs write permission for that folder.
That's normally accomplished with a server management tool where you can set those rights.


your account have not sufficient permissions to access the Disk drive folder 

give full access/permission to your back up folder on server.


这篇关于想要在实时服务器上备份我的数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆