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

Откуда:
Сообщений: 157
Добрый день.

Существует ли возможность с помощью BCP или BULK INSERT загрузить данные в БД с удаленного компьютера. С загрузкой данных с файла расположенного на сервере проблем нет.
Проблема стоит в распространение довольного большого файла в CSV на 100+ баз, примерно раз в 3 месяца. Хотелось бы обойтись без расшаривания папок и включения xp_cmdshell.
5 июн 16, 14:59    [19259620]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
mezzanine
Существует ли возможность с помощью BCP или BULK INSERT загрузить данные в БД с удаленного компьютера. С загрузкой данных с файла расположенного на сервере проблем нет.
Ну да, конечно, просто указываете сетевой путь.
5 июн 16, 15:06    [19259627]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
mezzanine
Member

Откуда:
Сообщений: 157
Хотелось бы обойтись без расшаривания папок и включения xp_cmdshell. Именно с удаленного компьютера с помощью стандартного соединения с БД.
5 июн 16, 15:21    [19259640]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
mezzanine
Хотелось бы обойтись без расшаривания папок и включения xp_cmdshell. Именно с удаленного компьютера с помощью стандартного соединения с БД.
С помощью стандартного сиквельного соединения могут работать только проги, которые используют это соединение :-)
Как же иначе???
Кто же будет второй стороной соединения на тех компах, если там ничего не запускать? Файловая система Windows не умеет делать BULK INSERT.

Так что либо запускаете BCP на тех компах, с которми в можете соединяться только с сиквелом, либо запускаете там же написанную вами прогу, использующую BULK INSERT
5 июн 16, 21:56    [19260418]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
mezzanine
Member

Откуда:
Сообщений: 157
alexeyvg,

Согласен должна быть утилита. Утилита BCP сможет с удаленного компа загрузить данные? Не удалось найти примеров.
И еще, сможет ли BCP работать без xp_cmdshell? Потому что xp_cmdshell по умалчению выключена в новых скд серверах, как потенциальная (черная) дыра в безопастности.
5 июн 16, 23:16    [19260635]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1837
mezzanine,

Если вы загрузку данных хотите инициировать со стороны сервера, то вы сможете загрузить данные с тех удаленных рабочих станций к которым имеет доступ учетная запись от которой запущена служба sql server.

В случае если инициатором загрузки является клиентская сторона вы, можете использовать любые методы соединения с сервером, главное что бы сетевой доступ был и проходила авторизация, на самом сервере.
5 июн 16, 23:54    [19260697]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
mezzanine,

используйте SSIS, он пришел на смену BCP. Позволяет автоматизировать любые задачи по импорту-экспорту. Придется повозиться с изучением, но оно стоит того.
6 июн 16, 11:35    [19261755]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
mezzanine
Согласен должна быть утилита. Утилита BCP сможет с удаленного компа загрузить данные? Не удалось найти примеров.
И еще, сможет ли BCP работать без xp_cmdshell?
Вы ещё раз подумайте над своей задачей. И сформулируйте её точнее.
Вам что нужно, что бы пользователь запускал импорт на удалённом компе, запуская программу импорт? Или нужно что то другое? Или вы хотите установить на удалённый комп сервер импорта, который будет импортить по расписанию?

Вы должны запустить BCP, или что то ещё, на удалённом компьютере, решайте сами, как вы это будете делать.

Решение зависит от разрешений и протоколов, которые открыты к удалённому компу, и от того, откуда вы хотите это запускать.

Разумеется, xp_cmdshell это сделать не сможет (без использования других программ).

Владислав Колосов
используйте SSIS, он пришел на смену BCP. Позволяет автоматизировать любые задачи по импорту-экспорту
Попобробнее, как ТС может решить свою задачу, используя SSIS? Установить SSIS и сервер на клиенте?
6 июн 16, 12:25    [19262095]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
mezzanine
Member

Откуда:
Сообщений: 157
alexeyvg,

Необходимость в распространении обновлений, миграция базы данных. Структура, данные и прочие штуки будут в миграционных скриптах SQL, всем этим управляет Flyway. Но вместе с распространением будут рассылаться словари данных, причем большие. Сейчас я их выгружаю в CSV файл, каким-то образом они должны попасть на сервер, дальше Flyway запускает скрипт обновления словарей где с помощью BULK INSERT заполняю временную таблицу и merge-ую данные в словаре.
Проблема в том что баз около 120 (рестораны) и примерно 5 независимых админов (сеть ресторана) которые получают такую пачку. Наверно стоит выработать единое требование на одинаковое (на всех сервера) название сетевой папки и в своих скриптах полагаться на нее.
6 июн 16, 12:35    [19262171]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
автор
Попобробнее, как ТС может решить свою задачу, используя SSIS? Установить SSIS и сервер на клиенте?


Не знаю, что ответить... Как - это обширный вопрос. Написать пакет средствами, которыми комплектуется сервер или создать мастером импорта. Сам пакет можно использовать несколькими способами - сервер комплектуется утилитой выполнения пакетов, пакет можно опубликовать на сервере и т.д.
6 июн 16, 13:10    [19262421]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 659
mezzanine
alexeyvg,

Необходимость в распространении обновлений, миграция базы данных. Структура, данные и прочие штуки будут в миграционных скриптах SQL, всем этим управляет Flyway. Но вместе с распространением будут рассылаться словари данных, причем большие. Сейчас я их выгружаю в CSV файл, каким-то образом они должны попасть на сервер, дальше Flyway запускает скрипт обновления словарей где с помощью BULK INSERT заполняю временную таблицу и merge-ую данные в словаре.
Проблема в том что баз около 120 (рестораны) и примерно 5 независимых админов (сеть ресторана) которые получают такую пачку. Наверно стоит выработать единое требование на одинаковое (на всех сервера) название сетевой папки и в своих скриптах полагаться на нее.


Вы как-то все усложняете BCP - это клиентская утилита, т.е. на машине с которой распространяются обновления нужна только она, плюс возможность подключиться к серверу. Сам сервер на этой машине не нужен.
Дальше вы пишете, например, батник

start bcp DB1.dbo.table1 in "file1" -S Имя_сервера_1 ... явки, пароли... прочие параметры
start bcp DB1.dbo.table2 in "file2" -S Имя_сервера_1 ... явки, пароли... прочие параметры
start bcp DB1.dbo.table1 in "file1" -S Имя_сервера_2 ... явки, пароли... прочие параметры
start bcp DB1.dbo.table2 in "file2" -S Имя_сервера_2 ... явки, пароли... прочие параметры
И не надо пересыть фалы на сервер, расшаривать чего-то.
BCP и файл для загрузки лежат и запускаются на одной машине, а сервера стоят где угодно, главное чтобы к ним можно было подключиться.
6 июн 16, 14:33    [19262983]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
mezzanine
Member

Откуда:
Сообщений: 157
Guf,

В итоге написал скрипт на PowerShell. В дальнейшем можно конфигурировать для своих нужд и работает очень шустро.
6 июн 16, 18:09    [19264378]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Владислав Колосов
автор
Попобробнее, как ТС может решить свою задачу, используя SSIS? Установить SSIS и сервер на клиенте?


Не знаю, что ответить... Как - это обширный вопрос. Написать пакет средствами, которыми комплектуется сервер или создать мастером импорта. Сам пакет можно использовать несколькими способами - сервер комплектуется утилитой выполнения пакетов, пакет можно опубликовать на сервере и т.д.
Жесть.
Вы может темой ошиблись? Или отвечаете на свой личный вопрос?

Повторю - нет доступа от сервера к компу, из которого нужно импортировать данные.
Понимаете?
Для простоты - нет провода сетевого.

Какой SSIS? Тут вопрос совсем о другом, не о средствах импорта.
6 июн 16, 20:39    [19264826]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
alexeyvg,

да, внимательно прочитал. Автор хочет получить доступ к файлам, не давая удаленный доступ к хранилищу файлов. Без агента на месте хранения эту задачу не решить, нужно что-то, что будет проталкивать файлы на удаленный сервер в эти 100+ баз.
6 июн 16, 23:06    [19265174]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных с удаленного компьютера  [new]
mezzanine
Member

Откуда:
Сообщений: 157
Владислав Колосов,

Как уже писал решил скриптом PowerShell. Великолепно работает с файлами csv на локальной машине, открывает соеденение с базой, создает временые таблицы, грузит в них данные c csv, с временными таблицами выполняю merge, закрываю соединение и на базе чистота и порядок.
6 июн 16, 23:47    [19265269]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить