我有一个 SQL Server 2014 数据库,日志文件填满了磁盘。由于它是一个测试数据库,我们决定只删除整个数据库。我们将它脱机,但当我们尝试删除它时,我们收到一条消息,说它正在使用中,因此无法删除。
离线怎么能用呢?我怎样才能让它掉下来?(最好不要上网。)
我有一个 SQL Server 2014 数据库,日志文件填满了磁盘。由于它是一个测试数据库,我们决定只删除整个数据库。我们将它脱机,但当我们尝试删除它时,我们收到一条消息,说它正在使用中,因此无法删除。
离线怎么能用呢?我怎样才能让它掉下来?(最好不要上网。)
作为一项规则,在删除数据库之前,我先设置离线 30 天,然后再删除它。如果遗漏了任何东西并且仍然需要数据库,我可以快速设置在线以进行完全恢复。
USE master
GO
ALTER DATABASE database_name
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
如果您在脱机时删除数据库,除非您有意清理它们,否则文件将永远保留在服务器上。假设您已经进行了所需的任何备份并且确定要完全删除服务器上的数据库,您可以将其重新联机然后删除它。
USE [master]
GO
ALTER DATABASE database_name
SET ONLINE
DROP DATABASE database_name
GO
数据库完全重新联机然后被删除。在下降之前设置紧急状态可能是更好的做法吗?根据许多变量,理论上,当您联机时,丢失的 OLTP 连接可以在 ONLINE 和 DROP 之间访问数据库。
使用 SET EMERGENCY,将“READ_ONLY”授予系统管理员成员,并使数据库足够在线,以便删除服务器上的文件。至少在我对 SQL2014 的有限测试中
USE [master]
GO
ALTER DATABASE database_name
SET EMERGENCY
DROP DATABASE database_name
GO
如果错过的 OLTP(或任何东西)设法在 ONLINE 和 DROP 之间连接到数据库,您将通过 drop 删除它的任何记录。
在删除之前使用 OFFLINE 数据库设置紧急状态可能是更好的做法吗?如果您使用的是 T-SQL,是否可以快速建立任何可能的连接?
如果您在 SSMS 上使用删除选项,即使是在线和删除之间最好的情况,也可以在几秒钟内完成。应该始终避免这种情况吗?