![重新启动数据库实例中的数据库,而无需重新启动整个数据库实例](https://linux22.com/image/483896/%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%9E%E4%BE%8B%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8C%E8%80%8C%E6%97%A0%E9%9C%80%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%95%B4%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%9E%E4%BE%8B.png)
我有一个数据库服务器,其中运行着多个数据库实例。我在访问某个数据库时遇到问题,想重新启动该数据库,但不想重新启动整个数据库服务器,因为这会影响该实例中的其他数据库或同一服务器上的其他实例。
是否可以通过使用命令行或者其他任何方式来重新启动单个数据库?
从服务器上分离数据库并重新连接或使其脱机并重新联机是否与重新启动该数据库相同?
注意:仅添加在 win2k3 上托管的 MSSQL 2005 服务器。
答案1
我不知道将单个数据库脱机然后重新联机是否等同于重新启动 SQL 服务(至少从数据库的角度来看 - 对于服务来说绝对不是),但它将“重置”数据库,直到关闭所有现有连接并回滚所有打开的事务。如果这是您想要的效果,那么它可能就足够了,并且不会影响在该 SQL 实例上运行的任何其他数据库。
从 SSMS,您可以使用此 SQL:
-- 'rollback immediate' will disconnect existing users w/out
-- waiting for transactions to finish.
ALTER DATABASE MyDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE
go
ALTER DATABASE MyDatabase SET ONLINE
go
答案2
访问该特定数据库时您遇到了哪些问题?如果数据库损坏,重新启动数据库不会有任何效果,但通常会尝试。
万一是损坏,您需要弄清楚问题的严重程度:DBCC CHECKDB (yourdb) WITH NO_INFOMSGS, ALL_ERRORMSGS
然后从备份中恢复,将数据提取到新数据库中,或者作为最后的手段运行数据库修复。这些方法各有优缺点,具体取决于您哪里出了问题 - 但除非您确实遇到了损坏问题,否则我不会在这个主题中充斥详细信息和链接。如果是损坏,您可以随时致电产品支持,以帮助您实时恢复,而不是依赖论坛。
谢谢