powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / vfp9 и Sql2000
39 сообщений из 39, показаны все 2 страниц
vfp9 и Sql2000
    #35994361
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имею под серваком SQL2000 базу данных.
Создал в фоксовской базе данных удаленные представления к таблицам (Remote Views).
Применяю к строкам представления обычные фоксовские команды - Insert, Replace, Delete и т.д. (в любом порядке), все работает как положено. Но если после этих команд я послаю SQL команду на удаление группы строк таблицы прямо в SQL базе (для уменьшения трафика):

= SQLEXEC(nCurConnection, "Delete Serj.SprPokaz From Serj.SprPokaz Inner Join "+
"(Serj.SprUnitList Inner Join Serj.SprHome On Serj.SprUnitList.Id_SprHome=Serj.SprHome.Id) "+;
"On Serj.SprPokaz.Id_SprUnitList=Serj.SprUnitList.Id "+;
"Where Serj.SprHome.Id_SprGeu = ?TreeView.Id_SprGeu And Serj.SprPokaz.dDt BetWeen ?dDtFrom And ?dDtTill")

, выдается сообщение

" Connectivity Error [ODBC SQL Driver] Время ожидания истекло. "

Самое интересное то, что если я применяю выше указанную команду первой (до корректировки представления или добавления записей в представление) все работает как часы.

В чем может быть прикол?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994399
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
?sqlgetprop(nCurConnection,'Transaction')

Что возвращает?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994449
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nCurConnection - это новое соединение или то же самое, по которому подключается Remote View?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994628
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

nCurConnection = SQLCONNECT('ConnectKip')
ConnectKip - Connections
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994638
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist,

2 - ручная
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994693
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если коннект RV и nCurConnection разные соединения, то выполнение через nCurConnection - это другое подключение и nCurConnection ждет завершения транзакции у RV
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994696
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во-первых, я Вас умоляю, пишите так, как я показал
(сами глаза ломаете и других заставляете)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Text to lcSqlCmd NOSHOW PRETEXT  7 
	Delete Serj.SprPokaz 
		From Serj.SprPokaz 
			Inner Join ( Serj.SprUnitList 
								Inner Join Serj.SprHome On Serj.SprUnitList.Id_SprHome=Serj.SprHome.Id
								) On Serj.SprPokaz.Id_SprUnitList=Serj.SprUnitList.Id 
		Where Serj.SprHome.Id_SprGeu = ?TreeView.Id_SprGeu 
		  And Serj.SprPokaz.dDt BetWeen ?dDtFrom And ?dDtTill
EndText 
if SQLEXEC(nCurConnection, lcSqlCmd)<= 0 
   ...
   


во-вторых трейс в студию
смотрим в профайлере какие выполняются команды

+ пробуем вместо ? (параметров) в исполняемую строку написать прямо значения
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994710
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist,
Один и тот же
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994713
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ Вы точно уверены, что перед выполнением sqlexec
все изменения, произведенные в RW сохранены?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994744
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
У меня со структурой написания кода все в порядке.
Правильно сам сайт писать не дает. Но дело не в этом. Трассировал. Все переменные в норме. Дело в том, что если я SqlExec выполняю первоначально, то ни каких проблем нет. А после корректировки поля записи View-а почему-то не хочет. Причем прежде чем ошибку выбросить, как положено по таймеру отсчитывает время задержки на выполнение. Такое ощущение, что не происходит разблокировки таблицы в SQL базе. Но фоксовские команды при этом нормально отрабатывают.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994749
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
Да. После корректировки я делаю ReQuery
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994785
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже просили - показать трейс из профайлера в первом и во втором случае.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994821
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist,
Объясни тупому, что имеется ввиду.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994838
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эта команда посылается на сервер MSSQL

Код: plaintext
1.
2.
3.
= SQLEXEC(nCurConnection, "Delete Serj.SprPokaz From Serj.SprPokaz Inner Join "+
"(Serj.SprUnitList Inner Join Serj.SprHome On Serj.SprUnitList.Id_SprHome=Serj.SprHome.Id) "+;
"On Serj.SprPokaz.Id_SprUnitList=Serj.SprUnitList.Id "+;
"Where Serj.SprHome.Id_SprGeu = ?TreeView.Id_SprGeu And Serj.SprPokaz.dDt BetWeen ?dDtFrom And ?dDtTill")


У сервера есть тулза PerfomanceMonitor которая ловит все запросы к серверу, так вот в этой тулзе надо посмотреть, а какие команды посылаются на сервер, тогда будет более ясно почему второй запрос не проходит.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994841
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2000

запустите профайлер и смотрите трейс,
можете нам показать если не разберетесь (там есть возможность записать трейс в файл)
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994844
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
Попробую.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994854
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какие опции (avialable event classes) выбрать, чтобы не все гнало?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994864
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.youtube.com/results?search_type=&search_query=profiler+sql2000&aq=f

+ поиск по ключ.слова на форуме mssqlserver

+ укажите в template стандарт для начала
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994912
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
Вместе с серваком установлен просто SQL Profiler.
Его запустил, выбрал все опции. Файл создал, но он получился на 4 метра. Может не все надо выбирать?

А вообще сервак не я устанавливал. У тебя на сайте есть DTS Package Profiler, а у меня просто
SQL Profiler. Может чего до установить надо?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35994941
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995227
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korolyov_SВладимирМ,

nCurConnection = SQLCONNECT('ConnectKip')
ConnectKip - Connections
Вы не поняли вопроса.

Чтобы команда SQLExec() и Remote View работали в одном и том же соединении можно использовать две стратегии:

1. Открыть Remote View, а затем прочитать хендл (идентификатор) установленного соединения

Код: plaintext
nCurConnection = CursorGetProp("ConnectHandle", "MyRemoteView")

Здесь MyRemoteView - это алиас открытого Remote View

2. Другой вариант - это сначала создать соединение

Код: plaintext
nCurConnection = SQLCONNECT('ConnectKip')

А потом открыть Remote View, используя это соединение

Код: plaintext
USE MyRemoteView CONNSTRING nCurConnection

Если же открытие Remote View производится автоматически, вне зависимости от команды создания соединения, то вы получаете ДВА соединения. Два подключения к серверу.

По сути, симулируете многопользовательскую работу, когда к серверу подключаются два человека.

Вот мы с Павлом и пытаемся от вас добиться ответа на вопрос: вы создаете ДВА соединения? Одно для Remote View, другое для SQLExec(). Или используете одно общее?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995696
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот этот блок меня ввергает в ступор

авторIF @@TRANCOUNT > 0 ROLLBACK TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go

разберитесь, почему генерятся эти команды на сервер

уберите все транзакции из кода, снимите все галки(если есть такие) об использ-и транзакций в RV

+ просьба трейс снимать не для всего сеанса работы а именно
с точки начала запроса и ред-я данных в RV
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995716
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
Сейчас проверю.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995719
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
Сейчас сделаю по другому
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995734
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
Вы были правы. Тема Закончена
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995799
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Другой вопрос. Я открываю несколько представлений с опцией Connstring nCurConnection

Дает открыть 4 таблицы, а на пятой выдает ошибку Connection ConnectKip is Busy.

В чем может быть проблема?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995869
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хоть и не ВладимирМ, но отвечу - у Вас используется АСИНХРОННОЕ соединение, и до тех пор пока не будут вынуты все данные из предыдущего запроса соединение будет занять.

Вам уже советовали оставить все галки по дефолту.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35995904
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist,
Синхронное как раз таки.
В асинхронном режиме получаются накладки в коде.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35996062
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ открываю несколько представлений с опцией Connstring nCurConnection

Дает открыть 4 таблицы, а на пятой выдает ошибку Connection ConnectKip is Busy.

В чем может быть проблема?

можно вопрос на засыпку?

у Вас 9-я версия.
что Вас заставляет работать с RV, почему Вы не воспользуетесь КАД,
используя который Вы явно управляете механизмом получения данных,
изменениями и явно можете посмотреть рез-т всех действий ,
оценить успешность, либо явно понять причину ошибки?


мне оч. тяжело давать советы по RV, т.к. я не советую никому с этим связываться и
сам не использую и не стану.

смотрите в сторону установки каких-то св-в кол-ва получаемых от сервера записей
для КАД это св-во FetchSize
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35996088
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закачка данных из сервера на клиента может осуществляться двумя способами:

1. По некоторой порции за раз, затем постепенная подкачка этими порциями
2. Закачать сразу все

Выбор того или иного способа определяется набором свойств со словом Fetch.

По умолчанию, настроено все так, чтобы закачивается не сразу все записи, а порциями по 100 записей за раз. Это сделано для того, чтобы пользователь мог, получив первые 100 записей сразу открыть форму. А остальное будет подкачиваться постепенно.

Однако при такой настройке, соединение будет занято (Busy) до тех пор, пока на клиента не будет закачаны все записи. Вот и получается, что вы пытаетесь работать с занятым соединением.

Чтобы это исправить, необходимо переключиться в режим, когда закачивается все сразу. В этом случае, переход к команде открытия следующего Remote View не сможет быть выполнен, пока предыдущее View не закачает все записи. Но и соединение к этому моменту освободится.

Для уже созданных Remote View надо открыть дизайнер, далее пункт системного меню Query - Advanced Options - в группе Data Fetching поставить птичку в переключателе All напротив свойства "Number of Records to Fetch at time"

Если вы хотите, чтобы эта птичка устанавливалась автоматически для всех новых Remote View, то ее надо установить в общих настройках

Tools - Options - закладка Remote Data

Но эта настройка не изменит свойств уже созданных Remote View.

Программно, это свойство FetchSize=-1 для открытого Remote View. Т.е. можно изменить через CursorSetProp(), но уже после открытия View.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35996934
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

FetchSize=-1 и стоит
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35996976
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korolyov_SВладимирМ,

FetchSize=-1 и стоит

Для ВСЕХ Remote View? Насколько я понимаю, проблема, скорее всего, в одной из этих 4 Remote View, которые "дает открыть".

Кстати, а как вообще открываются эти Remote View? Прямой командой USE или же они включены в DataEnvironment и открываются автоматически?
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997262
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
Я обошел этот прикол.

Когда создаю соединение чререз:
nCurConnection = SQLCONNECT('ConnectKip')
А потом открываю Remote View, используя это соединение
USE MyRemoteView CONNSTRING nCurConnection

такая байда происходит. Я тоже думал что прикол в одной таблице. Поменял местами
порядок открывания, прикол повторился на другой, но той же по очереди.

Когда делаю
nCurConnection = CursorGetProp("ConnectHandle", "MyRemoteView")
Проблем не происходит.
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997290
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

"почему Вы не воспользуетесь КАД?"

Вообще до сих пор писал на 6. Сел за VFP9 недавно. Да и с SQL сервером работать толком не приходилось. Все почти с нуля.

Расшифруй, что такое КАД
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997330
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь пример для поиграться со скриптами таблиц
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997344
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример по-сложнее,
демонстрирующий каскадное взаимодействие КАД

(в примере бекап БД ms sql 2005)
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997345
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавчик к примеру каскадов КАД
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997390
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только просьба - без фанатизма

в примерах показаны просто возм-ти класса
и показано как .....

на самом деле в реальных приложениях
делают своеобразные "конструкторы",
которые позволяют работать со "своими" классами абстрактно,
т.е. руками никто кучу св-в классов не настраивает,
а пользуются некими "шаманствами",
если заинтересует - то продолжим
...
Рейтинг: 0 / 0
vfp9 и Sql2000
    #35997404
Korolyov_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
Спасибо. Посмотрю, сообщу.
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / vfp9 и Sql2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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