/// <summary>
/// sqlserver备份
/// </summary>
public class SqlserverBack : IBack
{
private string backPath = string.Empty;
public SqlserverBack()
{
backPath = ConfigurationManager.AppSettings["backPath"];
}
public string Back(string connstr)
{
if (string.IsNullOrWhiteSpace(connstr))
{
throw new ArgumentNullException("连接字符串不能为空");
}
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
string dbName = conn.Database;
string backDirectory = Path.Combine(backPath, dbName);
if (!Directory.Exists(backDirectory))
{
Directory.CreateDirectory(backDirectory);
}
string backFileName = Path.Combine(backDirectory, $"{dbName}{DateTime.Now.ToString("yyyyMMddHHmmss")}.bak");
string backSql = $"backup database {dbName} to disk='{backFileName}' WITH INIT;";
SqlCommand cmd = new SqlCommand(backSql, conn);
cmd.ExecuteNonQuery();
return backFileName;
}
}
}