Пятница, 11.10.2024, 08:52
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Ошибка при открытии "Структура хранения БД" в 6.99.1
oktb1cДата: Вторник, 31.10.2023, 09:54 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 20
Статус: Оффлайн
Платформа: 8.3.18.1289
Режим БД: клиент-серверный
Конфигурация. Название: Дуэт 2009 (2.0.1.20)
Конфигурация. Основной режим запуска: Обычное приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим управления блокировкой данных: Управляемый
Конфигурация. Режим совместимости: Версия8_3_14
Конфигурация. Режим использования синхронных вызовов: Использовать
Конфигурация. Версия БСП: 301
Инструменты разработчика. Версия: Конфигурация 6.99.1
Инструменты разработчика. Инструмент: Прочее
Инструменты разработчика. Перехват клавиатурного ввода: Нет
Инструменты разработчика. Объекты на сервере: Нет
Инструменты разработчика. Асинхронность запрещена: Нет
Инструменты разработчика. Разрешены имитаторы: Да
Клиент. Приложение: Обычное приложение 32б
Клиент. Проверка модальных вызовов: Нет
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru
Клиент. Отладка разрешена: Да
Клиент. Постоянный кэш метаданных: Да
Клиент. ОС: Майкрософт Windows 10 Домашняя 64-разрядная Русский
Клиент. ОС от имени администратора: Нет
Клиент. ОС выполнение BAT: Да
Клиент. ОС Текущая кодовая страница: 866
Клиент-Сервер. Пинг: 0мс
Сервер. ОС: Microsoft Windows Server 2019 Standard 64-bit Русский
Сервер. Процесс: 64б
Сервер. Отладка: http

Обновился с 6.63.2 на 6.99.1.

При попытке открытия инструмента "Структура хранения БД" получаю ошибку
{ОбщийМодуль.ирОбщий.Модуль(28135)}: Ошибка при вызове метода контекста (Open)
РезультатЗапроса.Open(ТекстЗапроса, СоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Запрещено разрешение VIEW SERVER PERFORMANCE STATE на объект "server" базы данных "master".

На 6.63.2 все работало.
Спасибо.
 
tormozitДата: Вторник, 31.10.2023, 11:40 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Покажи текст исполняемого в момент ошибки запроса
 
oktb1cДата: Вторник, 31.10.2023, 11:44 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 20
Статус: Оффлайн
Строка кода:
РезультатЗапроса.Open(ТекстЗапроса, СоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);

Значение переменной ТекстЗапроса:
SELECT 1 FROM _CommonSettings WHERE _SettingsKey = 'adb4bcf5-b83c-44a9-8570-de4b4b92b962'
 
tormozitДата: Вторник, 31.10.2023, 11:56 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
Уверен что ошибка возникает именно с таким значением параметра?
Эта строка выполняется много раз. Возможно ты на первом же вызове (без ошибки) остановился?
 
oktb1cДата: Вторник, 31.10.2023, 12:14 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 20
Статус: Оффлайн
Действительно, текст запроса с ошибкой другой:

DECLARE @pagesizeKB int
SELECT @pagesizeKB = low / 1024 FROM master.dbo.spt_values
WHERE number = 1 AND type = 'E';

SELECT 
a2.name AS TableName,
a2.object_id as ObjectID,
a1.ROWS AS Rows,
(a1.reserved + ISNULL(a4.reserved,0))* @pagesizeKB AS ReservedKB,
a1.DATA * @pagesizeKB AS DataKB,
(CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.DATA THEN (a1.used + ISNULL(a4.used,0)) - a1.DATA ELSE 0 END) * @pagesizeKB AS IndexKB,
(CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * @pagesizeKB AS UnusedKB,
SI.name as IndexName,
--SI.Index_ID as IndexID,
SI.type_desc AS IndexType,
sc.RecordLength as RecordLength,
dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups AS IndexUses,
dm_ius.user_updates AS IndexUpdates 
FROM
    (SELECT ps.object_id, ps.index_id,
            CASE WHEN (ps.index_id < 2) THEN ROW_COUNT ELSE 0 END AS [ROWS],
            ps.reserved_page_count AS reserved,
            CASE WHEN (ps.index_id < 2) THEN (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
                    ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)
                    END AS DATA,
            ps.used_page_count AS used
    FROM sys.dm_db_partition_stats ps
    ) AS a1
        LEFT OUTER JOIN
            (SELECT it.parent_id,
                    SUM(ps.reserved_page_count) AS reserved,
                    SUM(ps.used_page_count) AS used
                    FROM sys.dm_db_partition_stats ps
                        INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
                    WHERE it.internal_type IN (202,204)
                    GROUP BY it.parent_id) AS a4 ON (a4.parent_id = a1.object_id)
        INNER JOIN sys.indexes SI ON (SI.object_id = a1.object_id AND SI.index_id = a1.index_id) ---
        INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id ) 
        left join (SELECT sic.object_id, sic.index_id, SUM(sc.max_length)AS RecordLength
FROM sys.index_columns as sic with (nolock)
LEFT JOIN sys.columns as sc with (nolock) ON sic.object_id = sc.object_id AND sic.column_id = sc.column_id
group by sic.object_id, sic.index_id) sc 
on sc.index_id = SI.index_id and sc.object_id = SI.object_id
LEFT JOIN sys.dm_db_index_usage_stats dm_ius 
ON SI.object_id = dm_ius.OBJECT_ID AND SI.index_id = dm_ius.index_id AND dm_ius.database_id = DB_ID()
WHERE a2.TYPE <> N'S' AND a2.TYPE <> N'IT'
 
tormozitДата: Вторник, 31.10.2023, 13:22 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
По всей видимости это право требуется для чтения таблицы статистики использования индексов sys.dm_db_index_usage_stats . Думаю безопасность сервера сильно не пострадает если добавишь это разрешение (VIEW SERVER PERFORMANCE STATE).
 
  • Страница 1 из 1
  • 1
Поиск: