2017-02-16 12 views
0

Недавно мы переместили все базы данных с MyServerA в MyServerB. Все отлично работает на MyServerA, но когда я пытаюсь вызвать bcp команду с помощью xp_cmdshell, я получаю следующее сообщение об ошибке:SQL Server Не удалось открыть файл данных хоста BCP

Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file 

Некоторая информация:

  1. Я уверен, что пользователь I» m, зарегистрированный под MyServerB, имеет права, назначенные для местоположения удаленного сервера, на который я пытаюсь отправить сообщение. Я запустил «whoami» в командной строке и успешно добавил их под защитой с полным контролем в удаленной папке (какой из них поделен). Кроме того, я могу отобразить его или получить доступ к нему в порядке.

  2. Интересно, когда вы пытаетесь отправить уже существующий файл, то есть из того же места, куда я пытаюсь отправить, в качестве вложения с использованием sp_send_dbmail, я получил сообщение Access denied. Так что это проблема безопасности. Но см. № 1 выше.

  3. Я также попытался сохранить его в папке на локальном MyServerB, но я тоже не могу этого сделать.

Пример кода:

DECLARE @bcp varchar(2000); 

SET @bcp = 'bcp "SELECT 1" queryout "\\MyServerA\Reports\MyFile.txt" -c -T -S MyServerB'; 

EXEC master..xp_cmdshell @bcp; 
+0

'bcp' является * не * инструментом экспорта текста. Почему вы не используете SSIS? Сам факт, что вам нужно было повысить привилегии для запуска 'xp_cmdshell', должно быть предупреждением. –

+0

Во всяком случае, зачем запускать 'bcp' изнутри SQL Server? Вы можете запустить его из командной строки или запланировать его периодическое выполнение в запланированных заданиях. Вы также можете запланировать выполнение команды из агента SQL. Запуск 'xp_cmdshell' требует ослабления безопасности. –

+0

Это то, что я унаследовал. В этот момент мне разрешено обновлять SSIS или изменять сценарий или метод. Это работало до того, как есть, и они хотят, чтобы он был исправлен как есть. Спасибо за предложения, хотя. – ptownbro

ответ

0

Пошел к другу, который является экспертом. Проблема в том, что мне нужно предоставить разрешения для учетной записи serivce, с которой SQL-сервер пытался выполнить xp_cmdshell.

Задача была связана с тем, что учетная запись «Служба» была названа чем-то другим при просмотре учетной записи «Вход в систему», которая была связана с запущенной службой SQL Server. У него была учетная запись NT, связанная с именем экземпляра по умолчанию. То, что вы хотели выбрать, - это учетная запись «СЕРВИС».

Кроме того, старая машина работала без необходимости добавления этой учетной записи в это разрешение.

В любом случае, он работает сейчас.

Спасибо за помощь и интерес.

0

Run Whoami из xp_cmdshell, я уверен, что это даст вам подсказку, что нужно делать дальше.

+0

Я запускал «whoami», и поэтому я уверен, что разрешения были установлены правильно – ptownbro

 Смежные вопросы

  • Нет связанных вопросов^_^