xp_cmdshell выбрасывает 'null', но работает в командной строке - PullRequest
0 голосов
/ 12 марта 2020

Я использую команду xp_cmdshell для обработки CSV-файла в папке. Мой запрос выглядит следующим образом:

Exec master..xp_cmdshell 'C:\test\mydotnetapp.exe -s:03/09/2020 -t:1 -l:1,2,3,4,7 -d C:\test'

В SSMS эта команда возвращает ноль. Но в командной строке, когда я делаю:

cd C:\test
mydotnetapp.exe -s:03/09/2020 -t:1 -l:1,2,3,4,7 -d C:\test

Тот же запрос работает отлично. Пара вещей:

  1. xp_cmdshell включен
  2. SQL Сервер имеет доступ к папке
  3. Только эта команда xp_cmdshell не работает. мой другой xp_cmdshell работает нормально

Любая помощь о том, как это можно исправить?

1 Ответ

0 голосов
/ 12 марта 2020

Если это выполняется как часть SQL Задания, регулярно запланированного, запустите его как задачу за пределами SQL Сервера.

Многие производственные администраторы баз данных не позволяют ни одному процессу запускать XP_CMDSHELL с учетом безопасности проблемы.

Если CSV правильно сформирован, его можно сопоставить с SQL Сервером в виде таблицы (не рекомендуется).

Он может быть импортирован непосредственно на SQL Сервер.

И, наконец, многие производственные администраторы баз данных не устанавливают какой-либо пользовательский код процесса на рабочий сервер SQL. Сервер SQL Server предназначен для работы только на сервере SQL, а также на минимальном дополнительном уровне, необходимом для обеспечения безопасности и мониторинга.

...