Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: сбой канала связи

Ниже вы увидите некоторые команды командной строки Windows, которые я пытаюсь вызвать из папки 64-разрядных программных файлов для Microsoft SQL Server 2008

C:\Program Files\Microsoft SQL Server\100\Tools\Binn>SQLCMD -S "SQLI2B2" -d
 "I2B2_CRC-DEV" -i "C:\SVN\ONT\SQL SERVER\DX_SQLSERVER.sql" -E

HResult 0x2746, уровень 16, состояние 1 Поставщик TCP: существующее соединение было принудительно закрыто удаленным хостом.

Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: сбой канала связи.

c: \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn>

Теперь база данных (сервер), к которой я подключаюсь, - это SQL Server 2008. У меня было несколько каталогов в папке "Microsoft SQL Server". 90, 100, 110 и 120. Только 100 и 110 имели .\Tools\Binn\SQLCMD.EXE файл. Я заметил следующие драйверы в \\Control Panel\All Control Panel Items\Administrative Tools\Data Sources (ODBC)\Drivers\, поэтому я не знаю, подходит ли драйвер клиента для моей версии сервера.

Name                            Version
SQL Server                      6.01.7601.17514
SQL Server Native Client 10.0   2009.100.1600.01
SQL Server Native Client 11.0   2011.110.3000.00

-E в команде подразумевается использование аутентификации Windows вместо аутентификации SQL Server (с реальным пользователем и паролем).

Что может быть причиной этой ошибки, и что можно исправить?

Заметки:

Это было найдено в Windows 7. Следующее разрешение относится только к более ранним операционным системам.

https://msdn.microsoft.com/en-us/library/ms187005.aspx

4 ответа

Решение

Первая ошибка:

Поставщик TCP: существующее соединение было принудительно закрыто удаленным хостом.

Ошибка связи

Файлы меньшего размера будут работать, но если файл слишком большой, вы все равно получите это исключение. Единственное решение, которое я смог найти, - разбить файл, содержащий команды T-SQL, на несколько небольших файлов.

Вторая ошибка:

Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: сбой канала связи.

В папке "Binn" должны быть другие файлы, которые нужно запустить SQLCMD.EXE, кроме самого исполняемого файла. Либо добавьте к существующей переменной среды SYSTEM "PATH", либо добавьте новую переменную среды USER "PATH" в \\Control Panel\All Control Panel Items\System\Advanced system settings\Environment Variables\,

Variable name: PATH
Variable value: C:\Program Files\Microsoft SQL Server\100\Tools\Binn\

Варун Шарма упомянул в первом ответе, что он добавил оператор GO после каждой строки. Это слишком. Я добавлял GO каждые 1000 строк, и у меня это сработало.

Я получил эту ошибку из-за того, что SQL Server не понравилась одна из моих закомментированных строк SQL. Мой совет — начать с самого простого кода, чтобы убедиться, что это не проблема с подключением, а затем продолжить работу.

Закомментированная строка была --EXEC master..xp_cmdshell 'bcp ..., для запуска которой у удаленного компьютера не было разрешения. Позже в принятом коде есть почти идентичная строка, поэтому я думаю, что это какая-то неопределенная ошибка исправления безопасности. Вы могли бы подумать, что закомментированная строка не повлияет на проблемы с подключением, но вот мы здесь.

[Поставщик TCP: существующее соединение было принудительно закрыто удаленным хостом.
Sqlcmd: Ошибка: собственный клиент Microsoft SQL Server 10.0: клиент не может установить соединение. Код завершения процесса 1. Шаг не выполнен]

Это отлично работает для меня. Я установил последнюю версию SSMS и установил последний собственный клиент sql, затем сопоставил путь в переменной среды. Кроме того, не забудьте переместить новый путь вверх, чтобы он использовался первым. \Панель управления\Все элементы панели управления\Система\Дополнительные параметры системы\Переменные среды\

Другие вопросы по тегам