数据库访问被拒绝,缺少属性

数据库访问被拒绝,缺少属性

我们有一个带有 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

读了您的评论后,我正在考虑访问限制。

相关内容