想要在实时服务器上备份我的数据库 [英] Want to backup my database on the live server
问题描述
我想每天备份我的数据库,所以为此我尝试创建一个每天执行的脚本,并在我的托管服务器文件管理器文件夹中获取我的数据库备份。
为此我写了以下代码:
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 foldergive full access/permission to your back up folder on server.
这篇关于想要在实时服务器上备份我的数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!