SQL Server Express 2008不分离自动附加文件?
为SQLEXPRESS的MSDN documentation说:SQL Server Express 2008不分离自动附加文件?
当应用程序首次建立了从SQL Server Express中的一个运行实例的连接时,SQL Server Express将自动附加一个.mdf文件。当用户关闭应用程序时,SQL Server Express将从实例中分离.mdf文件。
这看起来没有发生。如果我用新名称替换MDF文件(当然在删除日志文件后),SQL Server Express将拒绝附加它。
我已经试过几乎所有的连接字符串参数可能的组合,并且它让我发疯。有什么建议么?
回答:
分离/关闭确实发生。如果它不会发生,那么你不可能替换MDF文件,因为它会被使用。您引用的文档不完全准确。正确的文件是在SQL Server 2005 Express Edition User Instances:
- 具有自动 关闭选项设置所以用户实例的数据库,如果有 为8-10 分钟数据库的连接,该数据库将关闭并 该文件已关闭。这会自动发生 ,但它可能需要 ,而特别是如果连接 池已为您的 连接启用。
- 通过调用
sp_detach_db
从实例中分离数据库 将关闭该文件。这个 是Visual Studio使用的方法到 确保数据库文件是 当IDE在 用户实例之间切换时关闭。
如果我斗胆尝试时,视为错误猜我会说,数据库没有拆下来,但自动关闭,并删除LDF后replcing的MDF会(理所当然)打开数据库。
由于旁注:
- 一个永远也不会删除LDF文件。如果您想要恢复数据库,请将替换为 MDF和LDF与新的。
- 确保您替换为正确的MDF和LDF版本。 SQL Server可以升级数据库,但不能降级它。
- 获取错误。如果SQL Express拒绝附加数据库,它会给出一个理由。查看RANU创建的ERRORLOG(在用户配置文件中),systen事件日志或附加分析器到用户实例。
回答:
private static void DetachMdf(string dbServer, string dbName) {
SqlConnection.ClearAllPools();
using (SqlConnection conn = new SqlConnection(string.Format("Server={0};Database=master;Integrated Security=SSPI", dbServer)))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("sp_detach_db", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@dbname", dbName);
cmd.ExecuteNonQuery();
}
}
}
以上是 SQL Server Express 2008不分离自动附加文件? 的全部内容, 来源链接: utcz.com/qa/265224.html