【问题标题】:Error getting SQL Server database out of recovery mode?使 SQL Server 数据库退出恢复模式时出错?
【发布时间】:2020-08-24 07:14:57
【问题描述】:

我有一个处于恢复状态的 SQL Server 数据库,这是我用来尝试让它退出恢复模式的脚本:

--Step 1 (Check Database Status) 
SELECT 
    DATABASEPROPERTYEX ('CM_DSS', 'status') AS '"CM_DSS Current Status"', 
    DATABASEPROPERTYEX ('ReportServer', 'status') AS '"ReportServer Current Status"',
    DATABASEPROPERTYEX ('ReportServerTempDB', 'status') AS '"ReportServerTempDB Current Status"',
    DATABASEPROPERTYEX ('SUSDB', 'status') AS '"SUSDB Current Status"'

--Step 2 (Set Database into Single User Mode)
ALTER DATABASE ReportServer SET Single_User

--Step 3 (Set Database in Emergency Mode)
ALTER DATABASE ReportServer SET EMERGENCY

--Step 4 (Repair Missing Log File with Dataloss  
DBCC CHECKDB('ReportServer', REPAIR_ALLOW_DATA_LOSS)

--Step 5 Set Database Access for Everyone 
ALTER DATABASE ReportServer SET MULTI_USER 

这是我尝试运行第 2 步后返回的错误:

消息 5011,第 14 级,状态 9,第 2 行
用户无权更改数据库“ReportServer”,数据库不存在,或数据库未处于允许访问检查的状态。

消息 5069,第 16 层,状态 1,第 2 行
ALTER DATABASE 语句失败。

我确定我对此数据库拥有管理员权限,如果没有,我该如何检查?因为 ReportServer 数据库确实存在,所以它只是处于恢复模式..

【问题讨论】:

    标签: sql-server set recovery reportserver


    【解决方案1】:
    ALTER DATABASE [database_name] 
    SET SINGLE_USER 
    WITH ROLLBACK IMMEDIATE; 
    

    应该踢掉其他人,以便它可以更改为单用户模式

    要检查您的权利,

    use [database_name]
    select *
    from sys.fn_my_permissions (NULL,'DATABASE')
    

    并且您需要对数据库拥有 ALTER 权限才能在数据库上使用 SET

    示例:

    【讨论】:

    • 当我键入脚本检查我的权限时,我收到此错误“消息 916,级别 14,状态 1,第 1 行服务器主体“DCSS\Austin.Holmes”无法访问数据库当前安全上下文下的“SUSDB”。”
    • 您是否在选择中使用了 DATABASE 这个词?您必须拥有该词才能使选择起作用。
    • 添加了你应该看到的结果图片 - 如果你没有看到这些,那么你没有很多权利
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多