Размер объекта недоступен для базы данных

14

Недавно я восстановил базу данных в том же экземпляре, из которого она была создана (SQL Server 2008 R2 Enterprise), и обнаружил, что не могу получить доступ к свойствам базы данных.

Я сделал следующее:

  • Проверил, правильно ли настроен владелец базы данных sp_helpdb.
  • Изменил владельца базы данных на sa. Не исправить.
  • Сменил владельца базы данных обратно на моего sysadminпользователя. Не исправить.
  • Выдан DBCC updateusageпротив уязвимой базы данных. Не исправить.
  • Запустите DBCC CheckDBвосстановленную копию в другой экземпляр. Коррупция не найдена. Восстановленная копия (из того же файла резервной копии) не выдает никаких ошибок при доступе к окну свойств базы данных.

Кто-нибудь может помочь?

Сообщение об ошибке, которое я получаю при попытке просмотреть свойства:

Невозможно отобразить запрошенное диалоговое окно. (SqlMgmt)
Размер свойства недоступен для базы данных «[DBNAME]».
Это свойство может не существовать для этого объекта или не может быть извлечено из-за недостаточных прав доступа. (Microsoft.SqlServer.Smo)

Я в sysadminэтом случае.

Обновление: Как и предполагалось, я создал нового пользователя, сделал его системным администратором и изменил владельца базы данных на него. К сожалению, не исправить. Я посмотрю, даст ли трассировка профилировщика что-нибудь полезное.

Обновление: Aaron - исходная база данных была переименована и переведена в автономный режим, но все еще находится в этом экземпляре. Резервная копия этой базы данных была затем восстановлена ​​с использованием исходного имени. Имена файлов новых файлов базы данных отличаются от оригинальных, поскольку они находятся в той же папке, что и исходный файл mdf / ldf. Восстановленная БД в настоящее время ведет наши критически важные приложения в обычном режиме.

Питер
источник
@Shanky Я использую SSMS 2014 и пытался сделать это с нескольких клиентов / серверов.
Питер
Возможно, также запустите трассировку профилировщика для БД, где он работает, и посмотрите, что там тоже отличается от того, где он работает и не работает - что-то должно быть другим?
Сок Pimp IT
У меня совсем недавно была эта проблема после восстановления большой базы данных. Мне жаль говорить, что все прояснилось. Может быть, глупый вопрос, но вы проверили журнал ошибок на что-нибудь неприятное?
dwjv 22.09.15

Ответы:

8

Я решил эту проблему, перезапустив службу SQL Server, к сожалению / к счастью.

Моей первоначальной идеей было отсоединить / прикрепить базу данных. Не то чтобы я думал, что это действительно решит проблему, я просто читал это где-то на форуме. Это не имело никакого эффекта.

Я, к сожалению, не сделал то, что предложил Пи Джей Махони: запустить трассировку. Я надеюсь, что снова увижу эту проблему, чтобы выяснить, обнаружил ли след что-либо. Спасибо за предложение.

По крайней мере, ответ на мой собственный вопрос означает, что мне не нужно видеть другого предложения о смене владельца базы данных; P

Благодарность

Питер
источник
5

У меня была такая же ошибка при попытке изменить свойства роста файла файла журнала рабочей базы данных. Я пытался использовать SSMS, и у меня была та же ошибка:

Размер объекта недоступен для базы данных XXX.

Вместо этого я использовал T-SQL, чтобы изменить файл журнала базы данных.

USE [master]
GO
ALTER DATABASE [MyDatabase] MODIFY FILE ( NAME = N'MyDatabase_log', FILEGROWTH = 524288KB )
GO

После выполнения команды я смог открыть свойства базы данных в SSMS. Я надеюсь, что это работает для других.

Метки.
источник
интересный! Прокомментируйте здесь, если это сработало для вас
Питер
работает нормально и правильно?
Kiquenet
1

Это может происходить в очень загруженных базах данных или даже если база данных вообще не занята, но в данный момент выполняется оператор, который быстро меняет размер файла журнала. Например, если вы попытаетесь удалить очень большое количество строк (миллионов) из таблицы, ядро ​​будет вынуждено регистрировать каждую строку в целях отката, что приведет к быстрому росту файла журнала. Пока это происходит, при попытке открыть свойства базы данных в SSMS вы увидите сообщение об ошибке «Размер свойства недоступен ..»

Другой способ воспроизвести это следующим образом: взять очень большую базу данных (более 100 миллионов строк) и выполнить для нее инструкцию ALTER TABLE (например, преобразовать столбец char в varchar). Посмотрите, как ваш файл журнала взрывается в сотнях мегабайт или даже гигабайт в секунду. Опять же, пока это происходит, вы, SSMS, не сможете указать размер базы данных, потому что она меняется слишком быстро, чтобы быть точной.

Само собой разумеется, пожалуйста, не пробуйте это на живых серверах. :)

Xotic1
источник
1

Просто наткнулся на это и от следа, видимо это было заблокировано выполняемой операцией INDEX REBUILD

Моя конкретная ошибка была

Свойство SpaceAvailable недоступно для базы данных «[dbOverwatch]». Это свойство может не существовать для этого объекта или не может быть извлечено из-за недостаточных прав доступа. (Microsoft.SqlServer.Smo)

SELECT
(SELECT SUM(CAST(df.size as float)) FROM sys.database_files AS df WHERE df.type in ( 0, 2, 4 ) ) AS [DbSize],
(SUM(a.total_pages) + (SELECT ISNULL(SUM(CAST(df.size as bigint)), 0) FROM sys.database_files AS df WHERE df.type = 2 )) AS [SpaceUsed]
FROM
sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id left join sys.internal_tables it on p.object_id = it.object_id

У него должно быть очень низкое значение тайм-аута, но, возможно, вы можете проверить, не блокируется ли что-нибудь, когда вы пытаетесь получить доступ к свойствам

Тьяго Дантас
источник
Интересный. Я проверю это.
Питер
0

Я получаю это сообщение об ошибке во время развертывания средства баз данных SQL Server для базы данных (на SQL Server 2008 R2). После завершения развертывания ошибка исчезнет. Это немного неприятно, потому что ни БД в однопользовательском режиме, ни только для чтения (конечно, нет), ни что-либо еще указывает на причину.

Magier
источник