SQL Server 2000执行SET EMERGENCY语句报语法错误如何解决
报错根因
你当前使用的SQL Server 2000版本不支持EMERGENCY数据库模式参数,该参数是SQL Server 2005及之后版本才新增的功能,因此执行ALTER DATABASE时直接触发语法错误。
解决方案
方案1:SQL Server 2000下手动开启紧急模式
- 第一步:开启系统表修改权限
sp_configure 'allow updates', 1 RECONFIGURE WITH OVERRIDE GO
- 第二步:修改数据库状态为紧急模式
UPDATE master.dbo.sysdatabases SET status = 32768 WHERE name = 'myDB' GO
- 第三步:重启SQL Server实例服务,重启后目标数据库就会进入紧急状态
- 操作结束后关闭系统表修改权限,避免误操作:
sp_configure 'allow updates', 0 RECONFIGURE WITH OVERRIDE GO
方案2:升级数据库实例
如果业务允许升级,将SQL Server实例升级到2005及以上版本,即可直接执行你最初编写的ALTER DATABASE myDB SET EMERGENCY;语句,高版本内置的紧急模式逻辑更完善,操作风险更低。
注意事项
修改系统表属于高危操作,执行所有步骤前务必先备份master数据库,以及目标数据库myDB对应的物理mdf、ldf文件,避免操作失误导致数据不可逆丢失。
内容的提问来源于stack exchange,提问作者devLooper
相关产品推荐
相关产品推荐

