sql - 重定位文件后 SQL Server 恢复数据库
问题描述
我编写了一个工具来将大量数据库文件移动到不同的分区。这些数据库正在使用 SIMPLE 恢复并且不会发生太大变化,所以我认为这样的事情会做:
// this is a mix of sql commands and disk copy commands
// single user, then offline
SQL: ALTER DATABASE [MY_DATABASE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
SQL: ALTER DATABASE [MY_DATABASE] SET OFFLINE WITH ROLLBACK IMMEDIATE
// copy to target folder
COPY "SOURCE\MY_DATABASE.mdf" "TARGET\MY_DATABASE.mdf"
COPY "SOURCE\MY_DATABASE_LOG.ldf" "TARGET\MY_DATABASE_LOG.mdf"
// delete from source folder
DELETE "SOURCE\MY_DATABASE.mdf"
DELETE "SOURCE\MY_DATABASE_LOG.ldf"
// modify
SQL: ALTER DATABASE [MY_DATABASE] MODIFY FILE (name = 'MY_DATABASE',
filename = 'TARGET\MY_DATABASE.mdf');
SQL: ALTER DATABASE [MY_DATABASE] MODIFY FILE (name = 'MY_DATABASE_LOG',
filename = 'TARGET\MY_DATABASE_LOG.ldf');
// multi user, then online
SQL: ALTER DATABASE [MY_DATABASE] SET MULTI_USER WITH ROLLBACK IMMEDIATE
SQL: ALTER DATABASE [MY_DATABASE] SET ONLINE
但是,最后一个操作(SET ONLINE
)经常挂起并等待一段时间,当我查询时,master.sys.databases
我可以看到状态是RECOVERING
.
有人可以解释为什么会发生这种情况,我在这里做错了什么,或者我是否应该以不同的方式做整个事情?
解决方案
推荐阅读
- r - R中的ggplot - 堆积条没有绘制正确的值
- php - PHP json_decode 返回 null,即使 json 是有效的
- javascript - NativeScript:更改属于 ListView 的按钮的背景颜色和文本
- python - 尝试按熊猫 df 中的索引号访问列。数据框由 value.counts() 函数创建。这没用
- c - 利用复杂结构中的标志的嵌入式 C
- excel - 在没有 INDIRECT 或 VBA 的情况下动态引用链接书中的单元格?
- javascript - 将 string.indexOf 的结果转换为 DOM 元素的引用路径
- sql - Postgresql - 使用函数动态创建多级排序
- sql - 从数据库中提取比较工具从哪里开始?
- php - 尝试在 URL 中传递变量时“抱歉,您不允许访问此页面”