RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)

Настройка системы для увеличения быстродействия при работе с деревом папок

Для подсветки непрочитанных карточек в папке, для каждого пользователя, выполняется SQL процедура, которая определяет и подсчитывает количество непрочитанных пользователем карточек. Выполнение этой процедуры, влияет на время загрузки дерева папок, навигацию по вложенным узлам дерева папок, отображение содержимого папки, особенно для папок с большим количеством карточек.

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

Ниже приведен скрипт, отключающий подсветку непрочитанных карточек на всех папках, кроме личных папок пользователей.

SET XACT_ABORT ON;

IF OBJECT_ID('dbo.FolderInfo') IS NULL
BEGIN
CREATE TABLE dbo.FolderInfo
(
FolderID uniqueidentifier PRIMARY KEY
,Flags int NULL
)
END

DECLARE @Folders TABLE (Id uniqueidentifier PRIMARY KEY)

-- Select folders from UserProfile card
INSERT @Folders(Id)
SELECT DISTINCT DefaultFolderID
FROM dbo.[dvtable_{C64843C3-484F-45E0-9B8A-900EA91BE54D}] WITH(NOLOCK)
WHERE DefaultFolderID IS NOT NULL;

BEGIN TRAN;

-- Backup old folder flags
WITH UserFoldersTree(FolderID, NestLevel)
AS
(
SELECT
Id
,1
FROM @Folders

UNION ALL

SELECT
RowID
,tPrev.NestLevel + 1
FROM dbo.[dvtable_{FE27631D-EEEA-4E2E-A04C-D4351282FB55}] tFld WITH(NOLOCK)
JOIN UserFoldersTree tPrev ON tPrev.FolderID = tFld.ParentTreeRowID
)
INSERT dbo.FolderInfo
(
FolderID
,Flags
)
SELECT
RowID
,Flags
FROM dbo.[dvtable_{FE27631D-EEEA-4E2E-A04C-D4351282FB55}] tFld WITH(NOLOCK)
LEFT JOIN UserFoldersTree tUserFld ON tUserFld.FolderID = tFld.RowID
WHERE tUserFld.FolderID IS NULL

-- Switch off Unread count
UPDATE tFld
SET Flags = ISNULL(tFld.Flags, 0) | 4 -- NO_UNREAD_COUNT flag
FROM dbo.[dvtable_{FE27631D-EEEA-4E2E-A04C-D4351282FB55}] tFld WITH(TABLOCK)
JOIN dbo.FolderInfo tInfo WITH(NOLOCK) ON tInfo.FolderID = tFld.RowID

IF @@ERROR <> 0
ROLLBACK TRAN;

COMMIT TRAN;
Читать дальше

4 коммент.:

V. Zinchenko комментирует...

Сверхактуально, спасибо!

Денис комментирует...

А у меня что-то не получается запустить, ругается на строку WITH UserFoldersTree(FolderID, NestLevel), пишет Incorrect syntax near the keyword 'WITH'

UserFoldersTree - это что за сущность? Поясните, пожалуйста.

yartkin комментирует...

Повторный запуск данной процедуры не проходит из-за ошибки неуникальности добавляемых данных. После создания таблицы dbo.FolderInfo нужно добавить DELETE FROM dbo.FolderInfo;

vasel79 комментирует...

А обратно как вернуть подсветку? Какое значение Flags нужно выставить?

Отправить комментарий