powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MSSQL и VFP (работа скриптов скопом)
19 сообщений из 19, страница 1 из 1
MSSQL и VFP (работа скриптов скопом)
    #33646070
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Составил файл скриптов на вставку в определенную таблицу в БД на MSSQL Server. Для того чтобы запустить эти скрипты из VFP конечно можно построчно просматривать файл и функцией SQLEXEC посылать по одному скрипту на сервер. А можно ли скопом???
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646226
Nutss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если их поместить в хранимую процедуру, а из фокса вызвать её и все?
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646259
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NutssА если их поместить в хранимую процедуру, а из фокса вызвать её и все?Нет, это решение мне не подходит. Т.к. происходит обычная загрузка данных. В БД я ничего не добавляю кроме загрузки данных. Это чужая БД. Просто я из разных источников (БД Access, ... ) составил файл скриптов на вставку данных и теперь мне просто надо отработать эти скрипты.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646322
Nutss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот такой вариант работает, значит можно и скопом

nConnect=SQLCONNECT('TEST')
? SQLEXEC(nConnect,"CREATE TABLE test (t varchar(1))")
? SQLEXEC(nConnect, "insert into test (t) values ('1')"+CHR(13)+;
"insert into test (t) values ('2')"+CHR(13)+;
"insert into test (t) values ('3')"+CHR(13)+;
"insert into test (t) values ('4')")
? SQLEXEC(nConnect,"DROP TABLE test ")
=SQLDISCONNECT(nConnect)
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646368
Nutss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно ещё использовать утилиту isql самого MS SQL сервера
или вызывать её из того же фокса
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646396
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nutssвот такой вариант работает, значит можно и скопом
nConnect=SQLCONNECT('TEST')
? SQLEXEC(nConnect,"CREATE TABLE test (t varchar(1))")
? SQLEXEC(nConnect, "insert into test (t) values ('1')"+CHR(13)+;
"insert into test (t) values ('2')"+CHR(13)+;
"insert into test (t) values ('3')"+CHR(13)+;
"insert into test (t) values ('4')")
? SQLEXEC(nConnect,"DROP TABLE test ")
=SQLDISCONNECT(nConnect)Сразу встает вопрос о максимальной длине строки, которую пропустит функция SQLEXEC.
У меня порядка 1000 INSERT-ов по 297(300) символов на INSERT, итого 300000 символов. Спасибо за идею. Надо попробовать.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646409
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс. А что через QA никак это не сделать? Или например циклом по 1 Insert-у?
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646790
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров Андрей...А что через QA никак это не сделать?..Нет, требуется внутри VFP.
Петров Андрей...Или например циклом по 1 Insert-у?Как я рассказывал выше (см. самый первый post), это не проблема. Я хотел просмотреть случай именно скопом.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646872
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скопом можно скорее всего сделать файл и подгрузить его в реал-тайм как скрипт средствами самого SQL сервера. А вот как тут уже помоему предлагали. На мой взгляд такой вариант будет правильнее. В общем сильно коробит использование "батчей" для экспорта.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33646981
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s=filetostr('file.sql')
sqlexec(cn,s)
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33647174
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024s=filetostr('file.sql')
sqlexec(cn,s)Вот это класс, что я и хотел. Спасибо тебе.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33654147
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для отправки INSERT - SCRIPT-ов из файла на MSSQL Server использую следующее:
Код: plaintext
1.
s = FILETOSTR('file.sql')
m.n_sqlexec = SQLEXEC(cn,s)
Значение m.n_sqlexec > 0, т.е. функция SQLEXEC() завершила свою работу.
Но когда анализирую информацию, т.е. считаю кол-во организованных INSERT скриптов в файле, их 14360. Теперь проверяю на сервере кол-во принятых записей, но их записалось 13172. Длина файла 1690275 byte. В документации указано ограничение на длину строки: Maximum # of characters per character string or memory variable 16777184
Очищаю таблицу на сервере и запускаю файл скриптов с SQL Manager, все 14360 записей сформировано.
Интересно почему в Fox-e неполучилось?
Неужели придется построчно скрипты запускать?
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33654154
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята извините все получилось. Это я из старого файла загружал. Еще раз прошу прощения.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33655607
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFP80SP1. При использовании
Код: plaintext
1.
s = FILETOSTR('file.sql')
m.n_sqlexec = SQLEXEC(cn,s)
Я думал что максимальная длина переменной S ограничивается 16,777,184 byte (согласно документации:)Maximum # of characters per character string or memory variable 16777184Но у меня сформировался файл длиной 23,757,236 byte и работа прошла нормально. Т.е.
значение m.n_sqlexec > 0, т.е. функция SQLEXEC() завершила свою работу.
И анализирую информацию, т.е. считаю кол-во организованных INSERT скриптов в файле и на сервере кол-во принятых записей равно. Каков тогда максимальный размер файла который можно передовать без получения ошибки??? Или это все выявится эксперементальным путем, что нежелательно?
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33657001
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САСоставил файл скриптов на вставку в определенную таблицу в БД на MSSQL Server. Для того чтобы запустить эти скрипты из VFP конечно можно построчно просматривать файл и функцией SQLEXEC посылать по одному скрипту на сервер. А можно ли скопом???
Честно говоря не понял в чем ваша проблемма !?
Сервер через SQLEXEC выполняет не команду, а пакет (batch).
Размер пакета очень велик (в районе 128 МБ - 64000 сетевых пакетов), а размер переменной в VFP равен 16 МБ. Я думаю, что вам хватит и того и другого. В крайнем случае можно рабить на несколько команд.
Формируйте пакет в VFP и собирайте все в переменную и выполняйте через SQLEXEC.
А использовать скрипт, созданный генератором скрипта EM или QA через файл скрипта (s=filetostr('file.sql') sqlexec(cn,s)) надо очень осторожно. Оба продукта любят вставлять в скрипт директивы конца пакета (GO), который SQL сервер не поймет.
С уважением, Алексей.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33657005
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САСоставил файл скриптов на вставку в определенную таблицу в БД на MSSQL Server. Для того чтобы запустить эти скрипты из VFP конечно можно построчно просматривать файл и функцией SQLEXEC посылать по одному скрипту на сервер. А можно ли скопом???
Честно говоря не понял в чем ваша проблемма !?
Сервер через SQLEXEC выполняет не команду, а пакет (batch).
Размер пакета очень велик (в районе 128 МБ - 64000 сетевых пакетов), а размер переменной в VFP равен 16 МБ. Я думаю, что вам хватит и того и другого. В крайнем случае можно рабить на несколько команд.
Формируйте пакет в VFP и собирайте все в переменную и выполняйте через SQLEXEC.
А использовать скрипт, созданный генератором скрипта EM или QA через файл скрипта (s=filetostr('file.sql') sqlexec(cn,s)) надо очень осторожно. Оба продукта любят вставлять в скрипт директивы конца пакета (GO), который SQL сервер не поймет.
С уважением, Алексей.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33657078
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ограничение на 16МБ в FoxPro - это тот размер, который будет корректно работать с любыми строковыми функциями FoxPro.

Закачать через FileToStr() можно практически неограниченный объем в переменную памяти (в пределах оперативной памяти). Но это не значит, что при выполнении каких-то операций с подобной строковой переменной Вас не выбросит из FoxPro или же содержимое переменной не будет обрезано до 16МБ.
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33657168
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Владимир!

> Я думал что максимальная длина переменной S ограничивается 16,777,184 byte

Именно так и есть.

> Но у меня сформировался файл длиной 23,757,236 byte и работа прошла
> нормально.

Переменная получаемая посредством FILETOSTR() - это исключение из правила :)
Она может быть очень большой. Я не в курсе - это так и задумано, или это
недоработка MSFT (не поставили одну проверку). Факт в том, что при
использовании большинства команд работы со строками возникнет ошибка. Так
что как говорится "используй, но осторожно - осторожно, но используй" :)
Если уж очень хочется с огромными строками работать, то используй старый
добрый приём - помести данные в memo поле :) Там размер ограничен чем-то
вроде 2Гб-520 байт... Но опять-же обработать такое содержимое как одну
"цельную" строку у тебя не получится.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MSSQL и VFP (работа скриптов скопом)
    #33657267
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ВСЕМ что откликнулись. Я понял так. Скорее всего не надо шутить с переменной выше 16Мб. Лучше разрезать полученный файл на части. И отправлять эти части на сервер. Т.к. программа будет работать у пользователя, то не следует перегибать палку.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MSSQL и VFP (работа скриптов скопом)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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