Короткий ответ

Если на самом SQL01 SSMS к .\MSSQLSERVER открывается, а с SRV-1C — error 40/26, это протокол и сеть, не база Accounting. Включите TCP/IP, фиксированный 1433 для default, правило firewall с адреса SRV-1C, не «firewall off». SQL Browser (UDP 1434) нужен для именованных экземпляров, не обязан для default на 1433. Не открывайте 1433 в интернет.

Симптомы и как отличить

Типичная картина:

  • Test-NetConnection SQL01 -Port 1433 с SRV-1C = False;
  • локально sqlcmd -S . ок;
  • после переноса VM в другой VLAN — тишина.

Отличия:

| С SRV-1C 1433 True, 18456 | уже логин | права | | Служба Down | служба | | 1С не видит инфобазу | кластер | клиент |

Возможные причины

  1. TCP/IP Disabled, включён только Shared Memory / Named Pipes.
  2. IPAll порт пустой + dynamic, клиент ждёт 1433.
  3. Windows Firewall профиль Public, нет правила.
  4. Межсетевой экран между VLAN 1С и SQL.
  5. Browser Down при named instance.
  6. Слушает только 127.0.0.1.
  7. Редко: IPsec, фильтрация SMB вместо TDS (путать порты).

Диагностика

С SRV-1C:

Test-NetConnection SQL01 -Port 1433
Test-NetConnection SQL01 -Port 1434 -ErrorAction SilentlyContinue
Resolve-DnsName SQL01

На SQL01:

Get-NetTCPConnection -LocalPort 1433 -State Listen |
  Format-Table LocalAddress, LocalPort, OwningProcess
Get-Service SQLBrowser, MSSQLSERVER
Get-NetFirewallRule -DisplayGroup 'SQL*' -ErrorAction SilentlyContinue |
  Format-Table DisplayName, Enabled, Direction, Action

Configuration Manager: SQL Server Network Configuration → Protocols for MSSQLSERVER → TCP/IP → IPAll: TCP Port 1433, Dynamic Ports пусто.

Named instance: какой порт в IPAll, запущен ли Browser.

Решение

Сценарий A. TCP выключен

Включите TCP/IP, рестарт MSSQLSERVER в окне простоя 1С. Проверьте Listen 0.0.0.0:1433 или конкретный IP, не только loopback.

Сценарий B. Firewall на хосте

Правило inbound TCP 1433, remote IP = SRV-1C (и jump-хост DBA). Для named + dynamic: либо фиксированный порт + правило, либо UDP 1434 + динамический диапазон. Не отключайте брандмауэр навсегда.

Пример (подставьте IP):

New-NetFirewallRule -DisplayName 'SQL TDS from SRV-1C' -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 10.0.20.10 -Action Allow

IP SRV-1C свой.

Сценарий C. Default vs named

1С и sqlcmd -S SQL01 — default. Строка SQL01\INST2 требует Browser или SQL01,порт. Зафиксируйте порт INST2 и пропишите в 1С host,port, если Browser закрывать политикой.

Сценарий D. Только localhost

В TCP/IP properties включите нужный IP / Listen All Yes. Не оставляйте Enabled=No на рабочем интерфейсе.

Сценарий E. Сеть

VLAN, UTM, IDS. Снифф с SRV-1C: SYN на 1433, есть ли SYN-ACK. Если RST — хостовый фильтр. Если тишина — ACL на маршруте.

Контур VLAN: 1С-сервер и SQL не в одной сети

Частый прод: SRV-1C в VLAN приложений, SQL01 в VLAN баз, UTM между ними. Правило «разрешить 1433» забыли после смены IP SRV-1C. TNC с SQL01 на себя бесполезен. Всегда меряйте с SRV-1C.

Не открывайте 1433 с пользовательских VLAN «на всякий случай»: бухгалтеру SSMS не нужен, а ransomware будет рад. Только адрес(а) кластера 1С и jump-хост DBA.

SQL Browser отвечает широковещательно в подсети. Через маршрутизатор broadcast не ходит: named instance по имени SQL01\INST с другой VLAN без Browser-форвардинга не резолвится. Поэтому для 1С лучше default MSSQLSERVER на 1433 или явный SQL01,1433 в строке.

# с SRV-1C: фиксированный порт, без Browser
Test-NetConnection SQL01 -Port 1433
sqlcmd -S 'SQL01,1433' -E -Q 'SELECT @@SERVERNAME, name FROM sys.databases WHERE name = N''Accounting'';'

Если так работает, а SQL01\MSSQLSERVER нет — оставьте в 1С SQL01 или SQL01,1433, не чините Browser ради синтаксиса.

IPv6: клиент 1С может взять AAAA, SQL слушает IPv4. Либо слушайте оба, либо уберите AAAA, либо выровняйте. Не отключайте IPv6 «везде в Windows» как первый шаг — сначала что резолвит Resolve-DnsName SQL01.

После включения TCP обязателен рестарт службы SQL. Без него TNC всё ещё False, и вы будете зря крутить firewall.

Как проверить, что проблема устранена

sqlcmd -S SQL01 -E -Q "SELECT @@SERVERNAME;"
Test-NetConnection SQL01 -Port 1433

С SRV-1C, не с консоли SQL01. 1С открывает Accounting. Повтор после ребута SQL01 (служба слушает после старта).

Если не помогло

  • Kerberos/SPN при живом 1433 — SQL недоступен.
  • Alias cliconfg на SRV-1C указывает на старый IP.
  • IPv6 vs IPv4: клиент резолвит AAAA, SQL слушает только v4.

Профилактика

  • Фиксированный 1433, документирован.
  • Firewall с ограничением по remote IP.
  • Browser не торчать в пользовательские сети, если не нужен.
  • Мониторинг TNC 1433 с SRV-1C.

Документируйте: SQL01 слушает 1433/TCP на интерфейсе VLAN баз, firewall remote IP = SRV-1C, Browser выключен если порт фиксирован. После смены IP кластера 1С обновляйте правило, не «Allow Any». Проверка после патча Windows: профиль firewall не уехал в Public, правило на месте, TNC с SRV-1C зелёный. Алиасы 32-bit и 64-bit на SRV-1C проверьте оба: служба 1С x64 не читает WOW6432-алиас. Не открывайте 1433 в интернет «для франчайзи»: VPN и jump. Если UTM делает IPS на TDS, ложные срабатывания выглядят как обрыв; берите pcap, не отключайте IPS навсегда без исключения по сигнатуре.

После миграции SRV-1C на новый IP составьте таблицу: источник, назначение, порт, правило UTM, правило хоста SQL01, результат TNC. Без таблицы каждый «временно открыли any» остаётся на годы. Для SQL 2019 и 2022 процедура TCP/IP одинаковая, отличаются пути Configuration Manager. Не лечите error 40 переустановкой платформы 1С: клиент бухгалтера до 1433 не ходит. Если sqlcmd с SRV-1C успешен, а 1С нет — смотрите строку инфобазы и драйвер, это уже не firewall.

FAQ

Зачем Browser, если знаю порт?

Не зачем. Фиксируйте порт, закройте 1434. Browser удобен, но расширяет разведку.

Named Pipes с другого хоста?

Ненадёжно через сеть, зависит от SMB. Для 1С — TCP.

Можно ли подключать бухгалтера SSMS с ноутбука?

Не нужно для работы 1С. Если DBA — jump-хост, не 1433 с Wi‑Fi гостевой.

После включения TCP 1С всё ещё 40.

Клиентский кэш? Не тот хост в инфобазе. Проверьте свойства базы в кластере: имя СУБД SQL01.

TLS/шифрование принудительно.

Тогда смотрите сертификат и версию Native Client/MSOLEDBSQL на SRV-1C, не открывайте «шифрование выкл навсегда». Это уже hardening, не первый шаг error 40.