Определяем версию SQL Server, PostgreSQL и Oracle под 1С

· 9 мин

Содержание

Версию СУБД узнают на стороне самой базы данных, а не внутри 1С. Самый быстрый способ — выполнить один SQL-запрос: SELECT @@VERSION для Microsoft SQL Server, SELECT version(); для PostgreSQL и SELECT * FROM v$version; для Oracle. В ответ придёт полная строка с номером выпуска, редакцией и разрядностью.

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

Чтобы не листать статью, вот короткая шпаргалка — по одному запросу на каждую СУБД:

СУБДЗапросЧто покажет
MS SQL ServerSELECT @@VERSIONВыпуск, редакцию, ОС и разрядность
MS SQL ServerSELECT SERVERPROPERTY('ProductVersion')Только номер версии
PostgreSQLSELECT version();Полную строку сборки
PostgreSQLSHOW server_version;Голый номер версии
OracleSELECT * FROM v$version;Выпуск и номер ядра

Дальше — подробности по каждому серверу, способ посмотреть тип СУБД глазами администратора 1С и таблица совместимости платформы с конкретным выпуском сервера.

С чего начать: клиент-серверная база или файловая

Внешняя СУБД есть только у клиент-серверных баз. Если база файловая, данные лежат в одном файле 1Cv8.1CD, встроенный движок работает внутри платформы, и никакого MS SQL или PostgreSQL за ней нет — вопрос о версии СУБД для такой базы не стоит.

Отличить одно от другого просто по строке подключения. В окне запуска 1С выделите базу и посмотрите на её свойства: у файловой указан путь к каталогу, у клиент-серверной — имя кластера серверов и имя информационной базы на сервере.

Если базу открывают через веб-клиент или тонкий клиент по адресу вида Srvr="сервер";Ref="имя_базы", это клиент-серверный вариант, и версию ищем на сервере СУБД.

Тип самой СУБД (MS SQL, PostgreSQL, Oracle, IBM DB2) задаётся при создании базы в кластере и виден в консоли администрирования — об этом раздел ниже. Зная тип, выбираете нужный запрос.

Как проверить версию Microsoft SQL Server

Для MS SQL Server есть три рабочих пути: графический, запросом и из командной строки.

Через SQL Server Management Studio (SSMS). Подключитесь к экземпляру. Номер версии показывается прямо в обозревателе объектов — в скобках рядом с именем сервера. Для подробностей нажмите на сервер правой кнопкой → Свойства (Properties): на вкладке General перечислены версия, редакция и операционная система.

Запросом T-SQL. Откройте новое окно запроса и выполните:

SELECT @@VERSION;

Ответ — одна длинная строка со всем сразу. Если нужны отдельные поля, удобнее так:

SELECT
  SERVERPROPERTY('ProductVersion') AS Версия,
  SERVERPROPERTY('ProductLevel')   AS Уровень,
  SERVERPROPERTY('Edition')        AS Редакция;

ProductVersion вернёт номер вида 15.0.2000.5, ProductLevel — уровень обновлений (RTM, SP1, CU20), Edition — редакцию (Standard, Enterprise, Express).

Из командной строки. Если SSMS не установлена, подойдёт утилита sqlcmd:

sqlcmd -S localhost -E -Q "SELECT @@VERSION"

Ключ -E включает проверку подлинности Windows; вместо localhost подставьте имя или имя\экземпляр.

Имя экземпляра берётся из той же карточки базы в консоли кластера (поле Сервер баз данных). Если SQL Server поставлен именованным экземпляром, в поле будет запись вида сервер\SQLEXPRESS — её и используйте при подключении.

Ещё один источник — журнал ошибок SQL Server (файл ERRORLOG в каталоге Log экземпляра). В самой первой строке при старте службы сервер записывает свою полную версию и редакцию. Это выручает, когда к серверу нет доступа через SSMS, но есть доступ к файлам.

Номер в начале строки расшифровывается по семейству выпусков:

Номер версииВыпуск SQL Server
13.xSQL Server 2016
14.xSQL Server 2017
15.xSQL Server 2019
16.xSQL Server 2022

Для 1С почти всегда важна не только версия, но и редакция: Express имеет ограничение на размер базы, и при росте данных это становится причиной сбоев.

Как определить версию PostgreSQL для базы 1С

У PostgreSQL версию тоже проще всего спросить запросом. Подключитесь к серверу любым клиентом (psql, pgAdmin, DBeaver) и выполните:

SELECT version();

Придёт строка вида PostgreSQL 15.4 ... compiled by .... Если нужен только номер без лишнего текста:

SHOW server_version;

Эта команда вернёт голый номер, например 15.4. А SHOW server_version_num; даст его же числом (150004) — так удобнее сравнивать версии в скриптах.

Из консоли сервера. На самой машине с PostgreSQL номер версии показывают исполняемые файлы:

psql --version
postgres --version

psql --version печатает версию клиентской утилиты, а не сервера. На одной машине они обычно совпадают, но если подключаетесь к удалённому серверу, доверяйте запросу SELECT version();, а не локальному psql.

Если доступа к серверу запросом нет, но есть доступ к файлам, мажорную версию подскажет файл PG_VERSION в каталоге данных кластера (data): в нём лежит одно число — номер основной версии, например 15. Полный номер с минорной частью этот файл не хранит, но для сверки совместимости мажорной версии чаще всего достаточно.

Для 1С подходит не любой PostgreSQL, а специальная сборка с патчами под 1С. Это ключевой момент: обычный «ванильный» PostgreSQL с базой 1С стабильно не работает . В строке из SELECT version(); у правильной сборки обычно есть пометка, что она собрана для 1С, — если такой пометки нет, сборку стоит заменить на адаптированную.

Диагностика версии Oracle Database

С Oracle работают те же, кто его администрирует, поэтому способов несколько, и все — через словарь данных.

Классический запрос:

SELECT * FROM v$version;

В выводе будет строка Oracle Database ... с номером (например 19c) и разрядностью. Если нужны компоненты по отдельности:

SELECT * FROM product_component_version;

Эта таблица показывает версию ядра и установленных компонентов построчно. Короткий номер экземпляра даёт:

SELECT version FROM v$instance;

В выпусках 18c и новее у представления v$instance есть столбец version_full — в нём полный номер вместе с уровнем обновлений (release update):

SELECT version_full FROM v$instance;

Из командной строки. Клиент sqlplus печатает свою версию при запуске с ключом:

sqlplus -version

А версию сервера он показывает в баннере сразу после подключения к базе. Для запросов к v$version и v$instance нужны права на просмотр словаря — обычно у администратора базы они есть, обычному пользователю их выдают отдельно.

Где 1С показывает тип и сервер СУБД

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

Откройте оснастку Администрирование серверов 1С Предприятия (консоль кластера). Разверните узел кластера → Информационные базы → выделите нужную базу → правой кнопкой Свойства. В карточке базы увидите:

  • 🗄️ Тип СУБД — MS SQL Server, PostgreSQL, Oracle Database или IBM DB2.
  • 🖥️ Сервер баз данных — имя или адрес машины с СУБД.
  • 📁 База данных — имя базы внутри этой СУБД.

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

Те же сведения можно получить утилитой администрирования rac (консольный аналог оснастки). Точные подкоманды и ключи смотрите в справке rac help и rac infobase --help — синтаксис зависит от версии платформы.

Если консоль кластера не открывается или к серверу СУБД нет прямого доступа, попросите системного администратора — у него есть и права на СУБД, и доступ к машине, где она стоит.

Когда версия нужна для диагностики: журнал и ошибки

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

Но при сбоях на стороне СУБД полезен технологический журнал платформы (logcfg.xml): события DBMSSQL и EXCP сохраняют текст ошибки от сервера, и в нём нередко видна версия и строка подключения. Это помогает, когда база «падает» и нужно понять, с какой именно СУБД говорит платформа.

Версия СУБД чаще всего требуется в трёх ситуациях:

  1. 🔄 Перед обновлением платформы 1С — свериться с системными требованиями нового релиза.
  2. 🧩 При миграции базы на другой сервер — чтобы на приёмнике стояла совместимая или более новая версия.
  3. 🛠️ При разборе ошибок вида «ошибка СУБД» — часть проблем решается установкой свежего пакета обновлений (CU, service pack).
Что проверить перед обновлением или переносом базы
Выполнено: 0 / 5

Разрядность и издание: что важно, кроме номера

Один номер версии ещё не описывает сервер целиком. Для совместимости с 1С и для производительности смотрят на два дополнительных параметра.

Разрядность. Современные серверы 1С и СУБД — 64-разрядные. Разрядность SQL Server видна в той же строке @@VERSION (пометка (X64)), у PostgreSQL — в выводе SELECT version(); (x86_64). Ставить 32-разрядную СУБД под рабочую базу 1С не стоит — она упирается в потолок памяти задолго до реальной нагрузки.

Издание и уровень обновлений. У SQL Server издание (Edition) и уровень (ProductLevel) порой важнее мажорного номера: редакция Express ограничивает размер базы, а установка свежего накопительного обновления (CU) закрывает известные ошибки, из-за которых база 1С может работать нестабильно. Поэтому при разборе проблем фиксируйте не только «SQL Server 2019», но и редакцию с уровнем обновлений.

Для PostgreSQL аналог издания — происхождение сборки: обычная она или патченная под 1С. Это проверяется по строке версии и решает, будет ли база вообще работать.

Совместимость платформы 1С и версии СУБД

Платформа 1С работает не с любым выпуском сервера, а с проверенным диапазоном версий. Точный список для конкретного релиза всегда указан в его системных требованиях — ориентироваться нужно на них, потому что диапазон меняется от релиза к релизу.

Общая картина для актуальных релизов платформы 8.3 выглядит так:

СУБДЧто учитывать
Microsoft SQL ServerПоддерживаются современные выпуски (2016 и новее); редакция Express — с ограничением размера базы
PostgreSQLТолько специальная сборка, адаптированная под 1С; обычный дистрибутив не подходит
Oracle DatabaseПоддерживается; требуется согласованная с платформой версия клиента и сервера
IBM DB2Поддерживается ограниченно; применяется редко

Правило сравнения простое: версия СУБД должна быть не ниже минимальной из системных требований вашего релиза платформы. Формулировки «старше/новее» путают — сравнивайте по номеру.

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

Частые вопросы

Показывает ли сама 1С версию СУБД где-нибудь в интерфейсе?
Нет. В консоли кластера видно только тип СУБД и адрес сервера. Сам номер версии узнают запросом на стороне СУБД.
У файловой базы какая версия СУБД?
Никакой внешней. Файловая база использует встроенный движок платформы и хранится в файле 1Cv8.1CD. Вопрос о версии MS SQL или PostgreSQL для неё не возникает.
Чем версия отличается от редакции в SQL Server?
Версия — это выпуск (2019, 2022), редакция — издание (Express, Standard, Enterprise). Для 1С важны обе: Express ограничивает размер базы, и на большой базе это становится проблемой.
Почему мой PostgreSQL не работает с 1С, хотя версия свежая?
Скорее всего это обычная сборка. Платформе нужна версия с патчами под 1С. Проверьте строку из SELECT version(); — у правильной сборки есть соответствующая пометка.
Нужны ли особые права, чтобы узнать версию?
Для SQL Server и PostgreSQL запрос версии доступен обычному пользователю базы. В Oracle для чтения v$version и v$instance нужны права на системные представления — их выдаёт администратор.