Я написал приложение .Net, имеющее базу данных SQL Server 2008 R2 с относительно небольшим количеством таблиц, но в некоторых таблицах может быть около 100 000 000 записей! Для улучшения производительности SELECT я создал необходимые индексы, и он работает хорошо. Но, как известно, индексы необходимо перестраивать, когда они фрагментированы.Использование автономной индексации в SQL Server
Мы установили SQL Server 2008 R2 Express на одном из клиентских компьютеров плюс мое приложение Winforms. Еще три компьютера подключаются к этой базе данных по обычной локальной сети, и все кажется прекрасным.
Проблема в том, что я хочу перестроить индексы, например, каждый раз, когда пользователь начинает использовать мою программу на ЛЮБОЙ машине. Ну, я могу выполнить несколько ALTER INDEX, но, как указано в документах MS, индексирование OFFLINE блокирует таблицы для периода индексирования. Это означает, что другие пользователи теряют доступ к таблицам, когда пользователь запускает программу! Я знаю, что есть опция ONLINE, но она не работает в Express Edition SQL Server.
В других средах с реальным сервером, работающим все время, я бы создал Agent Job, который перестраивал индексы за ночь.
Как я могу решить эту проблему?
Поскольку пользователи моего приложения не имеют представления об индексировании вообще, я бы выбрал первый вариант. Как я могу запланировать работу при запуске компьютера? Я проверил параметры расписания в SQL Server, и я увидел «Автоматически запускаться при запуске агента». –
Это правильный вариант, он запускается при запуске агента, который должен быть сразу после запуска основной службы SQL Server, что должно быть после загрузки Windows, если служба включена автоматически. Независимо от того, что, пока агент запускается, когда система становится доступной, она запускает задачу. – Alejandro