我们有一个带有 SQL Server Express 2016 和 SSMS 的测试系统。
我们在这个系统中有一个单一数据库,用于我们的产品测试。
这在星期五还有效,但今天不再有效。
我们已将备份恢复到新的数据库中,并且现在正在进行测试,但我们想找出旧数据库停止工作的原因。
我以数据库服务器管理员的身份访问了该实例,该管理员在星期五有权访问该数据库。然后我尝试通过 SSMS 访问数据库。错误消息是:
The database "producttest" is not accessible. (ObjectExplorer)
我尝试通过 SSMS 打开数据库属性。错误消息最初是:
Property MaxDop is not available for Database 'producttest'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)
现在属性已经改变:
Property TargetRecoveryTime is not available for Database 'producttest'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)
并且我打开了一个新的查询窗口并提交了命令USE producttest
。错误信息是:
Message 916, Level 14, State 1, Line 1
The server principal "DOMAIN\Administrator" is not able to access the database "producttest" under the current security context.
我已经备份了数据库文件并尝试运行DBCC CHECKDB producttest
,但出现以下消息
Message 102, Level 15, State 1, Line 1
Incorrect syntax near "producttest"
可能存在什么问题?我现在可以尝试什么?
答案1
从您分享的少量数据来看,可能有多种原因。
您是否检查过数据库是否仍存在于服务器上?我的第一印象是它已被删除/丢弃。如果 SSMS 保持打开状态,则不会刷新对象资源管理器中的视图。
如果仍然在那里,那么它可能已被离线。您可以使用以下方法检查数据库状态: https://www.mssqltips.com/sqlservertip/1477/methods-to-determine-the-status-of-a-sql-server-database/
和这里:https://stackoverflow.com/questions/31866585/how-to-bring-back-offline-database-in-sql-server-2008
要检查的其他项目:您是否使用 SQL 身份验证登录到 SQL 服务器?您是否以 身份登录sa
?如果答案为否,则您可能需要以 身份登录sa
并将数据库所有权更改为sa
。
另外,检查文件增长是否由于文件限制而停止可能是一个好主意。但由于您无法访问 Db 属性,因此可能无法轻松完成。使用 TSQL:
alter DATABASE [producttest]
modify file (name = 'producttest', maxsize = 128MB)
GO
读了您的评论后,我正在考虑访问限制。