Я хотел бы создать копию моей базы данных SQL Server 2008, доступную только для чтения, на вторичном сервере для отчетов и анализа. Я тестировал доставку журналов, настроенную на запуск каждые 5 минут или около того. Увы, похоже, есть камень преткновения, поскольку во время восстановления требуется монопольный доступ к целевой базе данных, что, в свою очередь, требует уничтожения всех активных соединений. Это далеко не идеально, особенно если пользователь находится в процессе создания отчета. Есть лучшие предложения?
Изменить: я делаю это в экспресс-версии.
Если вы можете справиться с небольшой задержкой в данных, о которых вы сообщаете, то простым решением будет реже восстанавливать базу данных.
Вы по-прежнему можете выполнять резервное копирование и копировать каждые 5 минут, но просто измените частоту восстановления на один раз в час или другую подходящую.
Пользователи все равно могут отключиться, но частота будет ниже.
Если вам нужно сохранить онлайн-доступ к данным, у вас есть несколько вариантов (при условии, что вы хотите использовать только встроенные функции SQL для решения, если вы открыты для стороннего программного обеспечения и / или оборудования, вы Есть еще несколько вариантов):
1) Репликация - скорее всего, репликация транзакций и один подписчик только для чтения (msdn - хорошее начало для обзора, я бы опубликовал ссылку, но сейчас я могу использовать только 1, просто google "sql server replication msdn" и он будет наверху)
2) Сохраняйте конфигурацию доставки журналов для получения данных на вторичный сервер и используйте моментальные снимки базы данных в сочетании с общей базой данных и чередующимися синонимами (см. Вот Подробнее об этом типе архитектуры). Это будет работать, только если вы используете корпоративную версию на дополнительном сервере (только версия, поддерживающая моментальные снимки).