Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 queryout bcp на сетевой диск  [new]
Дядя Жора
Member

Откуда: Одесса
Сообщений: 840
Можно ли как-то

exec master..xp_cmdshell 'BCP "SELECT ..." queryout c:\1.txt -T -c' 


замест локального диска c:\ указать сетевой диск (сетевой путь, фтп и т .д.)?
Мне выдаёт

SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file
NULL
17 окт 13, 16:23    [14986518]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Можно путь в формате UNC, но у учетной записи, под которой работает служба SQL Server, должны быть права на сетевой диск.
17 окт 13, 16:24    [14986529]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
Дядя Жора
Можно ли как-то

Указать можно
А вот получить доступ, не имея прав, вряд ли
17 окт 13, 16:25    [14986536]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Всем доброго времени суток!
Существует проблема, над которой бьюсь уже пару дней суть такова:
1.Формирую xml файл через exec( bcp.....) и сохраняю его на локальный диск С.
Итог - все прекрасно сохраняется.
2.Формирую xml файл через exec( bcp.....) и сохраняю его на сетевой диск X.
Итог - не сохраняется.
3.Прописываю напрямую строку в cmd запущенную от администратора.
Итог - сработало.
4.Полазил по просторам нашел строчку:
EXEC sp_xp_cmdshell_proxy_account 'свой логин','свой пароль';

5.Попробовал запустить вылезла ошибка бла бла бла.
6.Нашел напутсвие, что нужно эту строку запустить в клиенте запущенном от имени администратора - запустил
EXEC sp_xp_cmdshell_proxy_account 'свой логин','свой пароль';

Сработало.
7.Запускаю exec( bcp.....) под собой - ничего...
Может кто знает что не хватает этому привередливому зверю MS SQL?

Буду очень благодарен!
15 ноя 13, 14:24    [15136247]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Может кто знает что не хватает этому привередливому зверю MS SQL?

Об этом пишется в сообщении об ошибке

Для начала неплохо бы проверить наличие вашего сетевого диска в той сессии, что создает xp_cmdshell

Сообщение было отредактировано: 15 ноя 13, 14:30
15 ноя 13, 14:29    [15136320]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Выполняю команду:
exec xp_cmdshell 'dir X:'

Пишет, что Системе не удается найти указанный путь.

В Службах для SQL сервера на вкладке "Вход в систему" выбрал пункт с учетной записью и ввел свою учетку и пароль.
Перезапустил службу и все равно не может найти диск X.
Прямо печалька какая-то... =(
15 ноя 13, 14:55    [15136713]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Прямо печалька какая-то... =(

А вот почему вы решили, что сетевые диски должны автоматически возникать во всех сессиях, которые используют одну сетевую учетную запись ?
15 ноя 13, 15:00    [15136751]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Я не решил, это от недостатка знаний, по-этому и спрашиваю =(
Просто я могу заходить на диск X:
Почему SQL это не может и как вылечить такую болезнь я и спрашиваю.
Может я информации мало дал? Может что-то нужно еще для полноты понимания?
15 ноя 13, 15:19    [15137012]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Просто я могу заходить на диск X:

Потому что вы в своей сессии отмапили сетевой ресурс в диск.

RRNDEONISIUSEZH
Почему SQL это не может

Потому что в сессии SQL-я никто не отмапил сетевой ресурс в диск

RRNDEONISIUSEZH
как вылечить такую болезнь я и спрашиваю.

Как уже было предложено выше, не использовать сетевой диск, использовать путь в формате UNC
15 ноя 13, 15:22    [15137066]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Спасибо за намек, запустил так
exec xp_cmdshell 'dir \\celerra_x\X:' 

Пишет не найдено сетевое имя =(

Где можно посмотреть настоящее UNC?
15 ноя 13, 15:53    [15137374]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Пишет не найдено сетевое имя =(

потому что это не unc

RRNDEONISIUSEZH
Где можно посмотреть настоящее UNC?

в свойствах диска
15 ноя 13, 15:57    [15137435]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Поставлю вопрос немного по другому.
Нужно с сервера делать xml и передавать на другой комп.
Вижу такое выполнение:
Создаем xml и помещаем его на сетевой диск.
С другого компа забираем файл.
Все.

Вся загвоздка в в помещении файла на сетевой диск.

Может есть другое какое-нить решение?
15 ноя 13, 16:00    [15137469]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Вся загвоздка в в помещении файла на сетевой диск.

Загвоздка в незнании принциров доступа к сетевым ресурсам

RRNDEONISIUSEZH
Может есть другое какое-нить решение?

Пусть "другой комп" соединяется с MSSQL и выбирает себе нужные данные.
15 ноя 13, 16:04    [15137515]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
автор
Пусть "другой комп" соединяется с MSSQL и выбирает себе нужные данные.

Проблема подключиться к серверу не проблема, проблема сформировать xml.
Ладно, спасибо за "ответы"...будем решать дальше июо у коллег с другого сервера все работает...
15 ноя 13, 16:10    [15137577]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Проблема подключиться к серверу не проблема, проблема сформировать xml.

Если вы не знаете, как сформировать ваш xml, то что же вы собрались запускать в bcp ?
15 ноя 13, 16:13    [15137607]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Вот запрос формирования xml на сервере
DECLARE @PER VARCHAR(1000)
DECLARE @DATE VARCHAR(1000)
DECLARE @TIME VARCHAR(1000)
DECLARE @DKLEY VARCHAR(1000)
SET @TIME = LEFT(REPLACE(CAST(GETDATE() as time),':','_'),5)
SET @TIME = REPLACE(@TIME,'.','_')
SET @DATE = CAST(GETDATE() as date)
SET @DKLEY = @DATE+'_'+@TIME
SET @PER ='bcp "SELECT TOP 64000 [T_ART_ID],[O_ID_ART],[T_ART_GRP_2_LVL_0_ID],[T_ART_GRP_2_LVL_0_NAME],[T_ART_GRP_2_LVL_1_ID],[T_ART_GRP_2_LVL_1_NAME],[T_ART_GRP_2_LVL_2_ID] FROM [SOURCE].[dbo].[T_ART] FOR XML AUTO, ROOT(''ROOT'')" queryout "X:\мой путь на сетевом диске\'+@DKLEY+'.xml" -w -r -S SAZ -t (/>) -T'
PRINT @PER
EXEC master..xp_cmdshell @PER,no_output

Именно на сетевой диск не сохраняется файл.
Пишешь локальный диск - все здорово.
В этом и проблема.
Как сформировать запрос с другого компа, чтоб он сформировал файл на нем же, а не на сервере, я не знаю.
15 ноя 13, 16:21    [15137694]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
RRNDEONISIUSEZH
Member

Откуда:
Сообщений: 27
Вопрос закрыт.
Необходимо было указать правильный UNC.
Спасибо!
15 ноя 13, 16:25    [15137740]     Ответить | Цитировать Сообщить модератору
 Re: queryout bcp на сетевой диск  [new]
Glory
Member

Откуда:
Сообщений: 104760
RRNDEONISIUSEZH
Как сформировать запрос с другого компа, чтоб он сформировал файл на нем же, а не на сервере, я не знаю.

Запустить там bcp или еще какую утилиту, которая выполнит запрос
"SELECT TOP 64000 [T_ART_ID],[O_ID_ART],[T_ART_GRP_2_LVL_0_ID],[T_ART_GRP_2_LVL_0_NAME],[T_ART_GRP_2_LVL_1_ID],[T_ART_GRP_2_LVL_1_NAME],[T_ART_GRP_2_LVL_2_ID] FROM [SOURCE].[dbo].[T_ART] FOR XML AUTO, ROOT(''ROOT'')"

RRNDEONISIUSEZH
Именно на сетевой диск не сохраняется файл.
Пишешь локальный диск - все здорово.
В этом и проблема.

Проблема в НЕправильном обращении к сетевому ресурсу
15 ноя 13, 16:31    [15137804]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить