【问题标题】:Getting exception when i am creating clone of database创建数据库克隆时出现异常
【发布时间】:2024-01-05 00:00:01
【问题描述】:

我想使用 C# 创建一个数据库的克隆,但是我遇到了一个异常

无法通过 MARS 连接执行 DBCC CLONEDATABASE。

我的代码:

SqlConnection sqlConnection = new SqlConnection(ConnectionString);

DataTable dataTable = new DataTable();
sqlConnection.Open();

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(" DBCC CLONEDATABASE (SinglePoint, SinglePoint_1) ALTER DATABASE[SinglePoint_1] SET READ_WRITE ", sqlConnection);
sqlDataAdapter.Fill(dataTable);
sqlConnection.Close();

【问题讨论】:

  • 您可以通过连接字符串禁用多个活动结果集并重试吗?

标签: c# sql-server database clone


【解决方案1】:

您的连接字符串包含MultipleActiveResultSets=True,它启用了SQL Server 中的MARS 功能。您尝试执行的语句不支持这一点。您需要将其从连接字符串中删除,或将值更改为False

此外,您不必要地将SqlDataAdapter 用于非查询语句。试试这个:

string sql = "DBCC CLONEDATABASE (SinglePoint, SinglePoint_1) " 
    + "ALTER DATABASE[SinglePoint_1] SET READ_WRITE";

using (SqlConnection sqlConnection = new SqlConnection(ConnectionString)) {
    sqlConnection.Open();
    using (SqlCommand cmd = new SqlCommand(sql, sqlConnection)) {
        cmd.ExecuteNonQuery();
    }
}

【讨论】: