powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задачка не для слабонервных
7 сообщений из 7, страница 1 из 1
Задачка не для слабонервных
    #32017883
Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть клиентское приложение, которое генерит на клиентской машине Paradox'овскую таблицу.
В базе MS SQL имеется таблица, по своей структуре полностью совпадающая с Paradox'овской таблицей у юзера. Одно из полей серверной таблицы Identity.

Такой механизм может быть задействован для любой таблицы серверной базы (а их там порядка полутора тысяч), соответственно структура Paradox'овской таблицы динамически изменяется.

Задача - вставить записи из Paradox'а в серверную таблицу с автоматической генерацией identity.


Рассматривались варианты:
1. Вставка данных по-записям клиентским приложением (типа insert into tablename (f1, f2, f3) values ('111', '222', '333') ). Минус в том, что для формирования текста запроса нужно, во-первых, проанализировать структуру таблицы и определить какое там поле identity, во-вторых, формировать строку значений values для каждой вставляемой записи с учетом типа поля.

2. Скопировать таблицу на сервер, и вставить записи с помощью чего-то типа
insert into tablename
select f1, f2, f3 from
OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\shared\";
Extended properties=Paradox 5.X')...userID_data
Минусы - копировать файлы по сетке?!- маразм какой-то - и перечень полей для select'а получить тоже не слишком просто.

Может что посоветуете?
...
Рейтинг: 0 / 0
Задачка не для слабонервных
    #32017918
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую попробовать использовать DTS. Стоит один раз настроить и потом сделать расписание для запуска..А сложного ничего в этой задачке невижу...
...
Рейтинг: 0 / 0
Задачка не для слабонервных
    #32017921
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Минусы - копировать файлы по сетке?!- маразм какой-то

А зачем копировать ? Указать в Data Source расшаренный ресурс - и все.

>и перечень полей для select'а получить тоже не слишком просто.
А если использовать linked server, то при помощи sp_tables_ex и sp_columns_ex можно получить всю информацию о таблицах и столбцах и сгенироровать динамический запрос.
...
Рейтинг: 0 / 0
Задачка не для слабонервных
    #32017935
Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DTS использовать не удастся - неизвестно когда и куда нужно закачивать данные.

В OpenDataSource не получается использовать расшареный ресурс. При попытке выполнить что-то типа
SELECT * FROM
OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="\Ваня\db\";
Extended properties=Paradox 5.X')...buff

машина думает секунд 40 после чего получаю

OLE DB provider 'Microsoft.Jet.OLEDB.4.0' reported an error.
[OLE/DB provider returned message: Недопустимое имя ''. Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.]

Скорее всего что-то неправильно делаю, а что именно не могу понять. Не подскажете в чем ошибка?
...
Рейтинг: 0 / 0
Задачка не для слабонервных
    #32017938
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть надо так ?
'Data Source=" \ \ Ваня\db\" (и db должен быть share, а не каталог)
и еще учетная запись, под которой стартует SQL Server, должна иметь права на данный сетевой ресурс.
...
Рейтинг: 0 / 0
Задачка не для слабонервных
    #32017976
maximF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Anton: для DTS можно задавать перед запуском параметры (вроде пути или имени сервера) перед запуском пакета. См. описание объекта DTS Package в BOL.
...
Рейтинг: 0 / 0
Задачка не для слабонервных
    #32018043
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что обсуждение данного вопроса сползло в кювет, а главное осталось за кадром. Пусть меня поправит автор вопроса, если я не прав, но IMHO у него стоит задача буферизации любых данных, закачиваемых с сервера с последующей синхронизацией с сервером после внесения в них изменений.
Эта тема весьма обширная и решаться эта задача может многими способами. У каждого из этих способов есть свои плюсы и минусы. Идеального решения на все случаи жизни нет. Хотя после появления ADO.NET стало понятно, что развитие технологий продвигается как раз в сторону разрешения данных проблем. Есл же речь идет о просто ADO, то имеется возможность:
1) использовать отключенные Recordset-ы
2) использовать пакетное обновление с помощью ButchUpdate
3) сохранять Recordset в специальном датаграмном файле на клиенте, править его, а потом отправлять обратно на сервер
4) хранить данные в виртуальной памяти приложения в виде большого количества незакрытых Recordset-ов (наверняка оперативной памяти без виртуальной не хватит)
5) использовать Merge-репликацию с клиентом файл-серверной СУБД, которая выполняет роль буфера на клиенте (например, MS Access)
6) использовать технологии MIDAS (правда, автор, как я понял, не Delphi-шник)
Использовать dbf-файлы для буферизации далеко не самая лучшая идея. IMHO. Самая лучшая идея - использовать ADO.Net. Только область эта наполовину в тумане и пока не известно, сколько нервов придется попортить багами. Кроме того, использовать сегодня эту технологию по-человечески можно только из VB.NET и C#. FOX там не просматривается.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задачка не для слабонервных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]