我最近将一个数据库恢复到从(SQL Server 2008 R2 Enterprise)备份的同一个实例,发现我无法访问数据库属性。
我做了以下事情:
- 使用 .检查数据库所有者是否正确设置
sp_helpdb
。 - 将数据库所有者更改为
sa
. 不是修复。 - 将数据库所有者更改回我的
sysadmin
用户。不是修复。 DBCC updateusage
针对受影响的数据库发出。不是修复。DBCC CheckDB
在恢复到另一个实例的副本上运行。没有发现腐败。访问数据库属性窗口时,恢复的副本(来自同一个备份文件)没有引发任何错误。
任何人都可以帮忙吗?
尝试查看属性时收到的错误消息是:
无法显示请求的对话框。(SqlMgmt)
属性大小不适用于数据库“[DBNAME]”。
此对象的此属性可能不存在,或者由于访问权限不足而无法检索。(Microsoft.SqlServer.Smo)
我是sysadmin
这个例子。
更新:按照建议,我创建了一个新用户,将其设为 sysadmin 并将数据库所有者更改为它。不幸的是,这不是修复。我会看看探查器跟踪是否产生任何有用的东西。
更新:Aaron - 原始数据库已重命名并脱机,但仍在该实例上。然后使用原始名称恢复该数据库的备份。新数据库文件的文件名与原始文件名不同,因为它们与原始 mdf/ldf 位于同一文件夹中。恢复的数据库目前正在正常驱动我们的关键应用程序。
不幸/幸运的是,我通过重新启动 SQL Server 服务解决了这个问题。
我最初的想法是分离/附加数据库。并不是说我认为这实际上会解决问题,我只是在某个论坛上读到。这没有效果。
很遗憾,我没有按照 PJ Mahoney 的建议去做:追踪。我希望我能再次看到这个问题,这样我就可以找出痕迹是否揭示了任何东西。谢谢你的建议。
至少回答我自己的问题意味着我不必再看到关于更改数据库所有者的其他建议;P
谢谢
尝试修改生产数据库日志文件的文件增长属性时,我遇到了同样的错误。我尝试使用 SSMS 并遇到了同样的错误:
我使用 T-SQL 来修改数据库日志文件。
命令完成后,我能够在 SSMS 中打开数据库属性。我希望这对其他人有用。
这可能发生在非常繁忙的数据库上,或者即使该数据库通常不是一个繁忙的数据库,但此时它正在执行一条正在快速更改日志文件大小的语句。例如,如果您尝试从表中删除大量行(数百万行),引擎将不得不记录每一行以进行回滚,这将迫使日志文件快速增长。在此过程中,如果您尝试在 SSMS 中打开数据库属性,您将看到错误消息“属性大小不可用..”
重现它的另一种方法如下:获取一个非常大的数据库(100+ 百万行),并在其上执行 ALTER TABLE 语句(例如将 char 列转换为 varchar)。看到您的日志文件以每秒数百兆甚至千兆字节的速度爆炸。同样,当这种情况发生时,您的 SSMS 将无法为您提供数据库大小,因为它变化太快而无法准确。
不用说,请不要在实时服务器上尝试这个。:)
刚刚从跟踪中发现了这个,显然这被正在运行的 INDEX REBUILD 操作阻止了
我的具体错误是
它必须具有非常低的超时值,但也许您可以检查当您尝试访问属性时是否有任何内容被阻止
我在针对数据库部署 SQL Server 数据库工具解决方案期间收到此错误消息(在 SQL Server 2008 R2 上)。部署完成后,错误消失了。这有点令人讨厌,因为数据库既不是处于单用户模式,也不是只读(当然不是)或其他任何表明原因的东西。