.net Core 中如果需要引用,需要事先安装两个包
Install-Package System.Data.Common
Install-Package System.Data.SqlClient
/// <summary> /// 数据库操作帮助类 /// </summary> internal class DataBaseHelper { /// <summary> /// 连接字符串信息 /// </summary> public DbConnectionStringBuilder ConBuiler { get; set; } private DataBaseHelper() { } /// <summary> /// 创建实例 /// </summary> /// <returns></returns> public DataBaseHelper CreateInstance(DbConnectionStringBuilder builder) { var dbHelper = new DataBaseHelper(); dbHelper.ConBuiler = builder; return dbHelper; } /// <summary> /// 备份数据库 /// </summary> /// <param name="dataBaseName"></param> /// <param name="fileFullName"></param> public int BackUp(string dataBaseName, string fileFullName) { using (var connection = new SqlConnection(ConBuiler.ConnectionString)) { var sqlStr = @"USE [master]; BACKUP DATABASE [" + dataBaseName + "] TO DISK = '" + fileFullName + "' WITH INIT;"; var cmd = new SqlCommand(sqlStr, connection); try { connection.Open(); var count = cmd.ExecuteNonQuery(); return count; } catch (Exception ex) { throw ex; } } } /// <summary> /// 备份数据库 /// </summary> /// <param name="restoreDataBaseName">还原的数据库名称(注意唯一性)</param> /// <param name="fileFullName">备份文件完整物理路径</param> public int Restore(string restoreDataBaseName, string fileFullName,string restoreDataBaseDir ) { using (var connection = new SqlConnection(ConBuiler.ConnectionString)) { try { connection.Open(); //获取备份文件的文件名 var sqlGetFile = "RESTORE FILELISTONLY from disk='{fileFullName}'"; var getFileCmd = new SqlCommand(sqlGetFile, connection); SqlDataReader dr; dr = getFileCmd.ExecuteReader(); var list =new List<string>(); while (dr.Read()) { list.Add(dr.GetString(0)); } dr.Close(); if (list.Count != 2) { throw new ArgumentException("非法的数据库备份文件。"); } //开始还原 var sqlStr = $@"use [master];RESTORE DATABASE [{restoreDataBaseName}] FROM DISK='{fileFullName}' with move '{list[0]}' to '{restoreDataBaseDir}\{list[0]}.mdf', move '{list[1]}' to '{restoreDataBaseDir}\{list[1]}.LDF'"; var cmd = new SqlCommand(sqlStr, connection); var count = cmd.ExecuteNonQuery(); return count; } catch (Exception ex) { throw ex; } } } /// <summary> /// 删除数据库 删除或者附加前记得干掉所有的进程 /// </summary> /// <returns></returns> public int Drop() {
// 执行 drop database databaseName
return 0;
}
/// <summary> /// 分离数据库 /// </summary> /// <returns></returns> public int Detach() {
//exec sp_detach_db DL_DZ_02
return 0; } /// <summary> /// 附加数据库 /// </summary> /// <returns></returns> public int Attach() {
//exec sp_attach_db DL_DZ_02,'E:\DbCreate\DBRestore\2347\DL_DZ.mdf'
return 0;
}
}