2010-05-20 4 views
1

У меня есть текстовый файл, сидящий на клиентском компьютере, и вы хотите переместить его на сервер базы данных (MS SQL 2008), но у меня нет доступа к серверу, кроме как через клиент SQL Server. Можно ли перенести этот файл на сервер с помощью клиентского соединения SQL?Передача файла через подключение SQL Server

ответ

2

Да, вы можете это сделать, но не через стандартный SQL. Вам нужно будет написать расширенную хранимую процедуру, которая позволит вам подключиться через клиентское соединение sql и получить доступ к файловой системе сервера. Но вам придется решать многие проблемы с привилегиями пользователей.

+0

расширенная хранимая процедура лучше, чем использование xp_cmdshell, предложенное Мэтьюем? – wasim

+0

xp_cmdShell имеет ограничения не более 8000 символов, в то время как у вас есть лучший контроль над процедурой расширенного/CLR. – WSK

+0

Спасибо Стив. Это выглядит круто. Я даю ему попробовать и посмотреть, как это работает. – wasim

0

Вы хотите поместить его в базу данных или в файловую систему? Если первый, рассмотрите text или varchar(max).

Если последние, используйте SQL-инъекцию и xp_cmdshell по мере необходимости. :) Собственно, в этом случае вы должны попросить администратора для более подходящего механизма передачи.

+0

xp_cmdshell лучше, чем писать расширенную хранимую процедуру? – wasim

0

Если вы хотите сохранить файл в базе данных, то это не проблема.

Если вы хотите сохранить в файловую систему, используйте хранимую процедуру CLR, отмеченную как EXTERNAL_ACCESS. Вы можете передать параметр BLOB процедуре, и процедура, в свою очередь, может записать содержимое BLOB на диск, используя обычные операции FileStream. Если файл очень велик, необходимо сделать особую осторожность, чтобы предотвратить раздувание памяти.

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