Как обойти ограничение размера базы данных в SQL Server Express для тестирования 1С?

Системный администратор 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При администрировании и разработке в среде 1С:Предприятие специалисты часто сталкиваются с необходимостью развернуть рабочую базу на локальном компьютере для проведения тестов, обновления конфигурации или проверки на ошибки. Популярный бесплатный инструмент Microsoft SQL Server Express Edition накладывает жесткое ограничение на максимальный размер одной базы данных — 10 ГБ (для версий, начиная с 2008 R2 и выше). Если ваша рабочая база превышает этот объем (например, весит 18 ГБ, как у автора темы), SQL Express просто заблокирует запись данных и выдаст ошибку.

В этой статье мы подробно разберем, как обойти это ограничение законным путем, правильно настроить среду для тестирования, провести глубокую проверку базы на ошибки средствами СУБД и развернуть тестовый сервер 1С параллельно с рабочим, не нарушая бизнес-процессы компании.

---

Решение 1. Переход на SQL Server Developer Edition

Самый простой, быстрый и абсолютно легальный способ избавиться от лимита в 10 ГБ для целей разработки и тестирования — использование редакции SQL Server Developer Edition.

Что такое Developer Edition? Это полнофункциональная версия СУБД, обладающая возможностями редакции Enterprise (включая поддержку огромных объемов оперативной памяти, неограниченного размера баз данных и секционирования таблиц). Единственное ограничение — её категорически запрещено использовать в коммерческой (продуктовой) среде. Для локального тестирования, отладки обновлений 1С и проверки целостности данных эта версия подходит идеально и предоставляется Microsoft бесплатно.

Часто при установке Developer Edition пользователи совершают ошибку: они скачивают дистрибутив, запускают стандартную установку, но база данных по-прежнему выдает ошибку превышения лимита. Выясним причину этой проблемы.

По умолчанию установщик создает новый именованный экземпляр (Instance) СУБД. На вашем компьютере остаются работать две независимые службы:

  1. Старый экземпляр SQL Express (например, с сетевым именем localhost\SQLEXPRESS), где лимит 10 ГБ все еще действует.
  2. Новый экземпляр Developer Edition (например, с именем localhost\MSSQLSERVER или другим назначенным именем).

Если в настройках подключения 1С вы продолжаете указывать старый путь к инстансу Express, лимит никуда не исчезнет. Чтобы решить эту проблему, рассмотрим два варианта действий.

Вариант А. Обновление редакции существующего экземпляра (Edition Upgrade)

Чтобы не плодить несколько копий SQL Server на одном компьютере, мы можем обновить существующий экземпляр Express до Developer «на лету» без потери настроек и баз данных:

  1. Запустите установочный центр SQL Server (SQL Server Installation Center) нужной версии.
  2. Перейдите на вкладку «Обслуживание» (Maintenance) в левом меню.
  3. Выберите пункт «Обновление выпуска» (Edition Upgrade).
  4. В открывшемся мастере укажите ваш экземпляр SQL Server (например, SQLEXPRESS).
  5. На этапе выбора лицензии укажите бесплатную редакцию Developer.
  6. Завершите процесс обновления. Программа обновит конфигурацию за несколько минут, после чего лимит на размер базы данных для этого экземпляра будет мгновенно снят.

Вариант Б. Подключение к новому экземпляру

Если вы установили Developer Edition в качестве нового экземпляра, обязательно проверьте строку подключения в кластере 1С. Вместо привычного пути Имя_Компьютера\SQLEXPRESS укажите дефолтный инстанс Имя_Компьютера (или то имя, которое было задано при установке Developer Edition).

---

Решение 2. Проверка и ремонт базы данных средствами SQL Server

Когда база данных перенесена на тестовый контур, перед обновлением конфигурации критически важно проверить ее на наличие физических и логических ошибок СУБД. Основным инструментом для этого является утилита DBCC CHECKDB.

При попытке запустить проверку или перевести базу в режим обслуживания новички часто сталкиваются со следующей ошибкой:

«Инструкция восстановления не была обработана. База данных не может быть доступна в эксклюзивном режиме (или только для чтения)».

Эта ошибка возникает из-за того, что к базе данных в данный момент времени подключены активные сессии (например, зависшие фоновые задания 1С, конфигуратор, консоль администрирования или служба сервера 1С). Чтобы выполнить проверку и исправление, базу необходимо принудительно перевести в однопользовательский режим SINGLE_USER, сбросив все чужие подключения.

Проанализируем правильный и безопасный SQL-скрипт для принудительного отключения сессий и запуска проверки:


-- Шаг 1. Принудительно отключаем всех пользователей и переводим базу в монопольный режим.
-- Параметр ROLLBACK IMMEDIATE мгновенно откатывает все незавершенные транзакции пользователей.
ALTER DATABASE UPP_1 
SET SINGLE_USER 
WITH ROLLBACK IMMEDIATE;
GO

-- Шаг 2. Запускаем глубокую проверку физической и логической целостности БД.
-- Команда проверит структуру таблиц, индексов и распределение страниц данных.
DBCC CHECKDB ('UPP_1') WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO

-- Шаг 3. Возвращаем базу данных в стандартный многопользовательский режим работы.
ALTER DATABASE UPP_1 
SET MULTI_USER;
GO

Где смотреть результаты проверки? Результат работы команды выводится во вкладку «Сообщения» (Messages) в программе SQL Server Management Studio (SSMS). Если утилита вернет сообщение вида CHECKDB обнаружил 0 ошибок размещения и 0 ошибок согласованности в базе данных, значит физических повреждений на уровне таблиц SQL в вашей базе нет.

Если ошибки все же обнаружены, СУБД предложит минимально допустимый уровень исправления в результатах выдачи. Для исправления ошибок вам потребуется запустить команду восстановления:


-- Запуск восстановления без потери данных (безопасный режим)
DBCC CHECKDB ('UPP_1', REPAIR_REBUILD);
GO

Если повреждения критические, может потребоваться режим REPAIR_ALLOW_DATA_LOSS (восстановление с возможной потерей поврежденных данных). Помните, что этот режим следует использовать только на копии базы данных и в самом крайнем случае!

---

Решение 3. Настройка параллельного сервера 1С для безопасного тестирования обновления

Представим рабочую ситуацию: на вашем предприятии развернута рабочая база 1С, функционирующая на старой платформе (например, под управлением SQL Server 2008 R2). Вам нужно протестировать обновление конфигурации на новой платформе 1С, но трогать рабочий сервер и отключать 80 активных пользователей нельзя.

Наилучшее решение — запустить второй сервер 1С (новую версию платформы) параллельно с существующим прямо на этом же компьютере или на вашей локальной машине, используя ту же лицензию. Разберем по шагам, как это сделать, чтобы службы не конфликтовали друг с другом.

Основная сложность заключается в том, что по умолчанию оба сервера 1С пытаются занять одни и те же сетевые порты (1540, 1541, 1560-1591). Нам необходимо разнести службы по разным портам.

Шаг 1. Создание новой службы сервера 1С

При установке новой версии платформы 1С откажитесь от автоматического создания службы сервера «по умолчанию». Мы зарегистрируем службу вручную через командную строку Windows (запущенную от имени Администратора) с измененными портами. Выполним команду:


sc create "1C_Enterprise_8.3_NewPlatform" binPath= "\"C:\Program Files\1cv8\8.3.25.1234\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\Program Files\1cv8\srvinfo_new\"" start= auto

Проанализируем параметры, переданные утилите:

Шаг 2. Запуск службы и подключение

После успешного создания службы откройте консоль Windows «Службы» (services.msc) и запустите созданную службу 1C_Enterprise_8.3_NewPlatform.

Теперь для настройки этого кластера и добавления информационных баз в утилите администрирования или при добавлении базы в список запуска 1С необходимо указывать адрес сервера с обязательным указанием нового порта, например: имя_сервера:1640.

Таким образом, мы получаем изолированную среду тестирования. Новая платформа 1С работает на портах серии 1600+, не мешая текущему производству на портах серии 1500+, а база объемом 18 ГБ успешно развернута на SQL Server Developer Edition без каких-либо искусственных ограничений на размер файла данных!

← На главную