Розмір властивості недоступний для бази даних


14

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

Я зробив наступне:

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

Хтось може допомогти?

Повідомлення про помилку, яке я отримую при спробі переглянути властивості:

Неможливо показати запитуване діалогове вікно. (SqlMgmt)
Розмір властивості недоступний для бази даних "[DBNAME]".
Це властивість може не існувати для цього об’єкта або може бути недоступним через недостатні права доступу. (Microsoft.SqlServer.Smo)

Я в sysadminцьому випадку.

Оновлення: Як було запропоновано, я створив нового користувача, зробив його sysadmin та змінив власника бази даних на нього. На жаль, не виправлення. Я побачу, чи дає слід профайлера щось корисне.

Оновлення: Aaron - оригінальну базу даних було перейменовано та знято в автономному режимі, але вона все ще знаходиться в цьому випадку. Потім було відновлено резервну копію цієї бази даних, використовуючи оригінальну назву. Імена файлів нових файлів баз даних відрізняються від оригіналів, оскільки вони живуть у тій же папці, що й оригінальний mdf / ldf. Відновлений db в даний час приводить наші критичні програми як звичайні.


@Shanky Я використовую SSMS 2014 і спробував це з декількох клієнтів / серверів.
Петро

Можливо, також запустіть профілерівський тракт проти БД, де він працює, і подивіться, що там теж відрізняється від тієї, де вона працює, а не працює - щось має бути інакше?
Pimp Juice IT

У мене зовсім недавно виникло це питання після відновлення великої бази даних. Пробачте, кажу, що очистив себе. Це може бути дурним питанням, але ви перевірили журнал помилок на що-небудь незрозуміле?
dwjv

Відповіді:


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. Я сподіваюся, що це працює для інших.


цікаво! Прокоментуйте тут, якщо це працювало для вас
Петро

працює добре і правильно?
Кікенет

1

Це може статися на дуже зайнятих базах даних або навіть якщо база даних взагалі не зайнята, але на даний момент вона виконує оператор, який швидко змінює розмір файлу журналу. Наприклад, якщо ви спробуєте видалити дуже велику кількість рядків (мільйонів) з таблиці, двигун повинен буде реєструвати кожну рядок для відкату, що змусить файл журналу швидко рости. Поки це триває, якщо ви спробуєте відкрити властивості бази даних у SSMS, ви побачите повідомлення про помилку "розмір властивості недоступний .."

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

Потрібно говорити, що не пробуйте цього на живих серверах. :)


1

Щойно натрапив на це і зі сліду, мабуть, це заблокувало операція INDEX REBUILD, яка виконувалась

Моя конкретна помилка була

Простір властивостіAvailable не доступний для бази даних "[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). Після завершення розгортання помилка зникла. Це трохи неприємно, тому що ні в БД, ні в режимі одиночного користувача, ні лише в режимі "читання" (ні в корсесі), ні в чому іншому не вказується причина.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.