我目前有以下命令
SqlCommand command = new SqlCommand(@"sys.sp_detach_db 'DBname'", conn);
Run Code Online (Sandbox Code Playgroud)
分离数据库,但是在执行数据库时会引发异常。说数据库正在使用中。在断开连接时或断开连接之前,如何断开连接?
更新:我目前正在使用SMO,但仍无法正常工作:
bool DetachBackup(string backupDBName)
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
var builder = new SqlConnectionStringBuilder(connectionString);
string serverName = builder.DataSource;
string dbName = builder.InitialCatalog;
try
{
Server smoServer = new Server(serverName);
smoServer.DetachDatabase(backupDBName + DateTime.Now.ToString("yyyyMMdd"), false);
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用SMO
从 SQL Server 实例中分离指定的数据库,并可选择在分离数据库之前更新统计信息。
using Microsoft.SqlServer.Management.Smo;
void DetachDatabase()
{
Server smoServer = new Server("MSSQLSERVER2008");
smoServer.DetachDatabase("Yourdatabasename", False);
}
Run Code Online (Sandbox Code Playgroud)
要从 app.config 获取服务器名称,您可以尝试如下操作:
string connectString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);
string serverName = builder.DataSource; //Server name
string dbName = builder.InitialCatalog; //Database name
Run Code Online (Sandbox Code Playgroud)