sqlcmd.exe - поставщик общей памяти: на другом конце канала нет процессов - PullRequest
0 голосов
/ 27 апреля 2019

Я прочитал множество постов и статей об ошибке:

Поставщик общей памяти: на другом конце канала нет процесса.Ошибка канала связи.

... в том числе:

Сообщение об ошибке: (поставщик: поставщик общей памяти, ошибка: 0 - на другом конце процесса нет процесса)труба.)

https://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/

Я могу легко и всегда подключаться из SSMS, как из смешанного режима, так и из проверки подлинности Windows.Но всякий раз, когда я пытаюсь запустить сценарий sql через sqlcmd.exe, я получаю сообщение об ошибке, показанное выше.

Вот что я запускаю из командной оболочки Windows:

"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\sqlcmd.exe" -S localhost -U sa -P myPassword -i "F:\<mypath>\<myfile>.sql"

Вот чтоЯ попытался / подтвердил:

  1. Я работаю SQL Server version 14.0 в Windows 10.
  2. Включена аутентификация в смешанном режиме, и я могу подключиться из SSMS.
  3. Я попытался указать 127.0.0.1 вместо localhost в моей cmd-строке.
  4. Протокол общей памяти включен.
  5. Протокол именованных каналов включен.
  6. TCP /IP включен.
  7. Моя служба SQL Server работает - я могу подключиться из SSMS.
  8. Я открыл входящий и исходящий порт 1433 в брандмауэре Windows и SQL Server (как приложение)разрешено моим брандмауэром.(Даже когда я выключаю брандмауэр, я все равно получаю ту же ошибку.)
  9. Удаленные подключения включены.
  10. Служба браузера SQL Server включена и работает.
  11. SQL ServerАгент включен и работает (хотя я не думаю, что это необходимо).
  12. Я перезапустил службу SQL Server и несколько раз перезагрузился.

НАИБОЛЕЕ ВАЖНО: Этодолжен иметь отношение к моему входному файлу, размер которого превышает 200 Мб.Когда я запускаю тот же оператор cmd-line, что и выше, но вместо этого указываю на test.sql, который содержит не более чем select getdate(), он отлично работает.Нет ошибок, нет проблем с подключением.

После всего, что я пробовал, я всегда получаю ту же ошибку.Что еще я могу попробовать?

1 Ответ

0 голосов
/ 27 апреля 2019

Я наконец понял это благодаря этому посту . Мне пришлось добавить -a 32767 в качестве параметра строки cmd, предположительно из-за огромного размера моего входного скрипта. Адский sqlcmd мог бы выдать более правдивое сообщение об ошибке, вместо того, чтобы притворяться, что не может соединиться. Связь никогда не была проблемой. Во всяком случае, я надеюсь, что это может помочь кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...