:: Не фоксом единым
memo поле из файла в MS SQL Server
Pavel1977
Автор
Можно ли в MS SQL Server 2000 в поле типа text таблицы засунуть содержимое файла(бинарного), то есть аналог фоксовской функции APPEND MEMO?

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Ты как это хочешь сделать в TSQL или из фокса.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
pavel1977
Из TSQL (Мне нужен файл добавить в таблицу на сервере, чтобы это сделала хранимия процедура сервера)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Как сделать, те подцепить на сервере txt файл и засунуть его в таблицу я не делал, а если тебе надо подцепить txt файл из фокса и передать этот файл в таблицу SQL (причем таблица м.б. временная), то делается это так
- в фоксе делается курсор с мемо полем и в него загоняется файл txt
- затем в SQLEXEC передается значение поля через "?" - теперь BLOB данные на сервере, и там уже с ними делай , что надо через UPDATETEXT и далее по ссылкам.
Чем могу.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Мне нужно, что бы файл с сервера (и не обязательно txt) можно было перекочать на клиентскую машину.
Конечно есть вариант занести все нужные файлы в поле BLOB таблицы сервера, а потом с помощью фокса прямо из этой таблицы копировать в файл. Но как мне занести эти файлы в таблицу сервера? Неужели надо использовать фокс?

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Тогда, не очень понял.

Цитата:
Мне нужно, что бы файл с сервера (и не обязательно txt) можно было перекочать на клиентскую машину.
Если просто переписать, то COPY FILE

Поясни, подробнее что в итоге надо
- Есть файл и его надо засунуть в таблицу SQL
- Есть файл и его надо просто переписать на клиента
- Есть таблица с BLOB и от туда надо вытащить данные на клиента

или, что-то другое?




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, PaulWist!

Наверное с клиента нету прямого доступа к ФС сервера (т.е. нету шар, или
нету прав на чтение), а у MS SQL-я есть - вот "через него" и нужно
соорудить.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
2Igor Korolyov
Если так, то утилита bcp

Цитата:
Importing Image Data
It is possible to bulk copy a data file as image data into an instance of SQL Server. The command to load the data file Test.doc into the bitmap table in the pubs database using the bcp utility is:

bcp pubs..bitmap in test.doc -Usa -Ppassword -Sservername

bcp prompts:

Enter the file storage type of field c1 [image]:
Enter the prefix length of field c1 [4]: 0
Enter length of field c1 [4096]: 5578
Enter the field terminator [none]:

In this example, the data file will be loaded into column c1, and 5578 is the length of the data file.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Да Igor Korolyov правильно понял.
А PaulWist'у спасибо. Нашел в хелпе про BCP, буду изучать?

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Мое личное мнение, но вот аналог этой BCP лучше тоже сделать на VFP и пусть с помощью этой твоей утилиты данные на SQL Server и заливается. Это может смахивает на манию VFP (утилиты на VFP, драйверы на VFP, службы на VFP), но все, что пытался использовать готовое (всякие утилитки пр.) потом пришлось сделать на VFP (аналог DTS например)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Я еще в SQL Server слаб, но допустим создам с помощью sp_OACreate объект фокса, а какие таблицы мне в этом фоксе будут доступны? Или наоборот, в этом фоксе создам курсор, будет ли он мне доступен в Server'e и как ?

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, PaulWist!

Хм, а как же ты её запустишь то на сервере, если у тебя кроме ODBC коннекции
к MS SQL на нём ничего нету? Даже если bcp использовать, надо искать на
сервере ХП, которая обеспечит запуск процесса на хост-системе...
IMHO всё же что-то тут не то идеологически...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
2Igor Korolyov

Цитата:
xp_cmdshell
Executes a given command string as an operating-system command shell and returns any output as rows of text. Grants nonadministrative users permissions to execute xp_cmdshell.

ну вообщем понятно, из коннекции подпихиваем строку с xp_cmdshell Bcp.exe ...., главное, что бы разрешения были на её выполнение (во кстати, ты как-то задавал вопрос - "а зачем использовать доменную учетную запись для самого сервера", вот вроде и ответ )

2Pavel1977

Давай опиши, что есть и что надо получить, а то мы здесь все сообща догадываемся и направляем тебя в разные стороны




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Кто должен инициировать процесс залива?

Если Планировщик Windows, или Планировщик MSSQL, то просто делаешь приложение VFP, через параметры передаешь варианты залива, а в программе производишь нужные действия.

Если сам MSSQL и не хочется использовать xp_cmdshell (нужна синхронность, не знаю, синхронно оно запускает или асинхронно), то сделай COM, дергай его свойства и методы, которые и будут заливать данные на MSSQL

Сам T-SQL не имеет встроенных функций по работе с текстовыми файлами, поэтому в любом варианте это все реализуется клиентским приложение (или родной утилитой bcp, или твоей на VFP)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
2oleg_km

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




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, PaulWist!

Цитата:
xp_cmdshell
Во-во, я про это и имел в виду
Но всё-равно что-то тут не то... Если нужен доступ - то давай доступ
аккаунту юзера на нужные шары, а сначала всё позакрывать, чтобы потом искать
пути обхода Что-то не то с логикой IMHO.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
В принципе я задавал вопрос в теме "Re: Доступ к папке вSQL Server 2000" на этом форуме. Постараюсь кратко и дохотчиво обьяснить суть проблемы( повторно). На сервере есть таблица со списком названий материалов, а сами материалы хранятся в файлах (Word) в одной папке на этом же компьютере(сервере).То есть для каждой записи таблицы соответстует файл из папки. Я хочу, чтобы с клиенского компютера можно было прочитать файлы только через клиенскую программу, которая использует соединение SQLServer'a. Я сначала хотел получить доступ к этой папке через Sevrer, но PaulWist меня в этом разубедил и дал мне три совета:
- использовать Com Remote сервер ( но все-таки если я уже использую SQL Sever зачем мне писать свой сервер);
- использовать скрытое подключение (но тут ссылку мне так и не дали);
- использовать Extended SP самого сервера. Extended SP - это расширенные хранимые процедуры через DLL, а классческую DLL на фоксе не напишешь, и я решил, что если бы в SQL Server'e была была команда аналогичная фоксовской команде Append Memo, то все стало бы просто. Я бы написал простую хранимую процедуру, которая бы копировала файл через поле типа text временной таблицы на сервере(а можно и не временой).
В принципе утилита BCP я думаю подойдет, может попробую через фокс.
Так , что спасибо за помощь, пока для прорабатывать это, но если еще чем подскажите, то буду рад.

P.S. Можно было все эти файлы занести в text поля этой таблицы, но тогда база может расширится за пределы 2 Гбайта, что не есть хорошо (конечно это не DBF файлы, но я где-то слышал что проблемы могут быть у любых файлов). Да кто иногда может быть удобно работать на серверном компьютере с этими файлами без программы.

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
2Igor Korolyov

Цитата:
Если нужен доступ - то давай доступ
аккаунту юзера на нужные шары, а сначала всё позакрывать, чтобы потом искать
пути обхода

Ага, понял где у нас разночтения
- аккаунт юзера - это физический юзер кот. ходит в систему (Иванов И.И.), те его пускают в сеть
- аккаунт сервера - это аккаунт пользователя домена, кот. даны разрешения на выполнения операций внутри домена (в частности запускать экземпляр сервера) и эти операции может инициировать (моё, твоё) клиентское приложение, но не как не аккаунт юзера.
На мой взгляд логично

2Pavel1977

Цитата:
- использовать Com Remote сервер ( но все-таки если я уже использую SQL Sever зачем мне писать свой сервер);

нет не так - ты создаешь OLEPUBLIC класс в фоксе и выполняешь его на сервере, а на клиенте получаешь результат (читай твой DOC файл)

Цитата:
использовать скрытое подключение

виноват, даже не помню где видел такое решение (ребята я думаю подскажут)

Цитата:
- использовать Extended SP самого сервера.

Вот эта xp_cmdshell и есть Extended SP только встроенная в MSSQL, те в принципе ты можешь написать
xp_cmdshell MyFox.exe, с помощью MyFox.exe залить твой Doc в BLOB и следующим шагом выдернуть по своему соединению этот файл на клиента.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Цитата:
использовать Com Remote сервер ( но все-таки если я уже использую SQL Sever зачем мне писать свой сервер);

нет не так - ты создаешь OLEPUBLIC класс в фоксе и выполняешь его на сервере, а на клиенте получаешь результат (читай твой DOC файл)

Я думаю - этот вариант самый лучший вариант, потому что на VFP это будет буквально 10 строчек кода, а наворот через SQL Server - даже не могу посчитать, даже с правами можно разрулить на нужные документы - на файлы ставятся нужные права, а Remote COM для чтения вызывает CoImpersonateClient.
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
2oleg_km
По поводу 10 строк наверное ты погорячился, одно упоминание об обработке ошибки в СОМ сервере приведет в уныние , хотя всё делается




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика