对某个用到use master的sql语句有疑问

时间:2022-03-20 16:23:57
USE master   /* 使用数据库master */
GO
ALTER DATABASE my_db REMOVE FILE db_3 /* 删除数据库my_db的文件db_3 */
GO

明明是对数据库my_db进行操作,USE master 在这里好像用得有点不对。
奇怪是这确实执行成功了,文件db_3真的被删除了。
希望有谁能给解释一下。

3 个解决方案

#1


你的库正在用,怎么可能给你移除呢?肯定是在别的库拉。而且这个库通常就是master,因为用户数据库的信息是存放在master的

#2


引用 1 楼 DBA_Huangzj 的回复:
你的库正在用,怎么可能给你移除呢?肯定是在别的库拉。而且这个库通常就是master,因为用户数据库的信息是存放在master的

这好像也说不过去,因为当我把语句改成
USE my_db
GO
ALTER DATABASE my_db REMOVE FILE db_3
GO
这样后,也能执行成功,文件db_3依然能被删除。

#3


那只能说刚好你这个功能不需要用到master而已,有些语句必须要在master中执行才有效,因为需要更改实例级别的信息。看了一下联机丛书,每一个例子都是use master的,所以你最好保留

#1


你的库正在用,怎么可能给你移除呢?肯定是在别的库拉。而且这个库通常就是master,因为用户数据库的信息是存放在master的

#2


引用 1 楼 DBA_Huangzj 的回复:
你的库正在用,怎么可能给你移除呢?肯定是在别的库拉。而且这个库通常就是master,因为用户数据库的信息是存放在master的

这好像也说不过去,因为当我把语句改成
USE my_db
GO
ALTER DATABASE my_db REMOVE FILE db_3
GO
这样后,也能执行成功,文件db_3依然能被删除。

#3


那只能说刚好你这个功能不需要用到master而已,有些语句必须要在master中执行才有效,因为需要更改实例级别的信息。看了一下联机丛书,每一个例子都是use master的,所以你最好保留