Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Будет ли жить такой проект? mdb + MS SQL Server / 23 сообщений из 23, страница 1 из 1
11.03.2003, 18:15
    #32117736
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Ситуация простая - пишется под заказ программа финансового учета (товары, деньги), за неплохие прямо скажем деньги. БД на MS SQL Server'e - типа всё круто. Но клиенты реализованы как mdb с прилинкованными таблицами и естественно это все работает медленновато (мягко говоря) - некоторые формы могут открываться по 20 сек (это при абсалютной незагруженности сети)
Все мои доводы, что так реализовывать неправильно игнорируються.

Так вот в чем вопрос, долго ли будет жить такой проект?
Если учесть, что ожидается работа одновременно до 30 пользователей, количество записей в таблице товаров порядка 10 - 20 тыс и документов от 100 тыс и выше.
Не загнется ли это все в один прекрасный момент? У кого нить был опыт создания подобных систем?
...
Рейтинг: 0 / 0
11.03.2003, 18:41
    #32117755
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Работать то он может, только вот надо его переработать. Если правильно переписать эти медленные формы, станут они быстрыми даже при такой технологии, хотя чего уж тут спорить, технология эта сильно устарела.
От числа записей и пользователей, однако же, она практически не зависит, особенно если немного попереписывать формы и запросы так, чтобы они НИКОГДА не возвращали много записей.
...
Рейтинг: 0 / 0
11.03.2003, 22:03
    #32117822
-=Alexey=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Будет, долго будет :), те параметры что ты привел, не нагрузка для sql server'a, ну а тормознутось клиентов определяется не только технологией, но реализацией.
...
Рейтинг: 0 / 0
12.03.2003, 02:29
    #32117849
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Согласен. что для sql server'а это не нагрузка, но тут по-моему самое слабое место - не это. Самое слабое здесь - это клиенты, которые используют устаревшую технологию, благодаря чему те же выборки данных осуществляються дико медленно, а от этого уже никуда особо не уйдешь. И по-моему тут вся нагрузка ляжет на сеть, поэтому скорость в любом случае будет зависеть от кол-ва пользователей, т.к. чем больше юзверей тем больше даных качается по сети => медленнее работает. (или я что-то не понимаю?)
А насчет того, чтобы переписать формы ... они и так уже периписаны на сколько это возможно.
Допустим есть форма с 10-ю комбобоксами в каждый из которых возвращаеться список (пусть даже не большой), то во время загрузки этой формы откроется и закроется как минимум 10+1 разных коннектов к базе, и будет работать это медленно, как не переписывай. К тому же уже сейчас используеться такой (ИМХО) изврат, как загрузка в комбы только одной -нужной записи, а остальные записи загружаеются только по событию OnMouseDown (но это не сильно помогает)
...
Рейтинг: 0 / 0
12.03.2003, 09:43
    #32117965
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Будет работать вечно, но скорее всего меньше - пока мелкомягкие не откажутся от поддержки mdb.
...
Рейтинг: 0 / 0
12.03.2003, 13:46
    #32118274
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Млин ... очень смешно!

А можно тогда еще вопрос: Если бы Вы были директором крупной торговой компании, то купили бы такой "клиент-сервер" ?
...
Рейтинг: 0 / 0
12.03.2003, 14:18
    #32118316
ДИРЕКТОР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Нет!!!
...
Рейтинг: 0 / 0
12.03.2003, 14:18
    #32118318
Suslik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Сложно найти директора торговой компании, разбирающегося в таких тонкостях.

Я бы не купил. Потом ведь обязательно пойдут проблемы с блокировками и так далее...
...
Рейтинг: 0 / 0
12.03.2003, 15:18
    #32118418
Игорек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Будет, еще как будет, вот увидишь!!! Вот в нашей организации уже несколько лет используется такая штука, а еще FoxPro+MS SQL Server. Удаленность SQL Servera до клиента составляет до нескольких десятков километров!!! Когда идет запрос от клиента к SQL серверу можно пойти покурить и еще выпить чашечку кофе и немного отдохнуть!!! Вот когда протянут оптоволокно и будет сеть ISDN, думаю, что будет работать быстрее, но это мечты.
...
Рейтинг: 0 / 0
12.03.2003, 15:48
    #32118472
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Я вообще-то серьёзно говорил. Вот уже года четыре такая байда работает и не жужжит. С блокировками проблем никаких (вернее, те же, что и при работе через ADO), потому что само по себе подключение таблицы ничего не блокирует.
...
Рейтинг: 0 / 0
12.03.2003, 17:11
    #32118606
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Когда-то, году в 1997, закончили разработку системы, подобной сабжевой. Я уже забывать об этом стал. Меня сильно удивило, что все работает до сих пор - просто случайно узнал.
А один мой знакомый до сих пор пишет на A1. Интерфейс - просто супер, фирменная софтинка! К сожалению это самое лучшее, что есть в его приладе..
...
Рейтинг: 0 / 0
13.03.2003, 02:35
    #32118841
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Впринципе я согласен, но это пишется как коммерческий продукт из расчета на то, что он будет потом успешно продаватся, так не лучше ли сразу написать как нужно ... например хотя бы как проект ADP?
...
Рейтинг: 0 / 0
13.03.2003, 05:59
    #32118855
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Конечно лучше (быстрее, надежнее и т.д.)
Только, IMHO, коммерческий проект лучше писать в более 'низкоуровневой' среде разработки.
...
Рейтинг: 0 / 0
13.03.2003, 09:46
    #32118924
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
- за неплохие прямо скажем деньги
- Все мои доводы, что так реализовывать неправильно игнорируються.

Ну и тебе не пофиг?
...
Рейтинг: 0 / 0
13.03.2003, 10:14
    #32118948
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Ну и тебе не пофиг?

Мне то наверное должно быть пофиг, но почему то нет.
А если такой вариант реализации не понравиться заказчику и он от него либо откажется, либо просто всем расскажет - чтобы не покупали этот софт в нашей фирме?
...
Рейтинг: 0 / 0
13.03.2003, 10:19
    #32118954
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
...либо просто всем расскажет - чтобы не покупали этот софт в нашей фирме?
Всем? Вот это промоушен, просто супер!
...
Рейтинг: 0 / 0
13.03.2003, 10:35
    #32118972
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Ну млин ... не всем, конечно. Я не то имел ввиду.
Но! ... Если у нас есть клиенты, которым нравится продукт который они у нас купили, то мы можем при "впихивании" следующим на них ссылаться, а если нет, то что?! ... Мы будем говорить, что мы уже продали нескольким фирмам, но им дико не понравилось как оно работает. Так?
...
Рейтинг: 0 / 0
13.03.2003, 12:46
    #32119207
superbluesman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Я вот работаю AccessXP+SQL2000

Использую тока хранимые процедуры, вся обработка данных только на сервере.
Из Access на SQL через ADO вызываю хранимые процедуры (функциями примерно той, что приведена первой),
а данные с сервера на Access притягиваю через DAO: в CurrentDB.QueryDefs подпихиваю имя хранимой процедуры с параметрами (см. пример 2-ой функции), иначе говоря в локальные Access-таблицы данные заливаю посредством исполнения PassTrouth-запроса одним махом (сначала пробовал через ADO, но перебор позаписьно кажной строки и занесение её в локальную Access-таблицу - дело долгое)
Не знаю, у меня есть одна юольшая форма, в которой штук 10-подформ+комбобоксы. Каждый клиент к серверу открывает 2-3 коннекта (2-под DAO, один - под ADO) Работает всё быстро.
Можно полученные данные с сервера в локальных таблицах вязать с другими какими прилинкованными источниками (так привыкли в конторе до меня работать), можно какую-то часть, непринципиальную, скажем подготовка таблиц для шахматки делать уже на клиенте. используя "местный" SQL
А в ADP - работа только с сервером и баста, никакой доп. свободы.
Будет время у меня, можно ADO-поковыряв набросать функции для асинхронной работы.
Уж ADO-то MS не забросит! Правда антаресно, как ADO.Net они подкрутят в Access???
Тема для меня актуальная, жду мнений, советов дельных, а то ж я не от хорошей жизни на Акцесс подсел, принудили... Хотя вижу, и тут жить можно.


Public Function execADO_Sql(pc_SqlCommand As String, pc_TypeCommand As String, ParamArray parr_Spprm() As Variant) As Variant

Dim ln_Low As Integer, ln_High As Integer, tmp_cmd As ADODB.Command, _
tmp_prm As ADODB.Parameter, ll_ExistRetParam As Boolean

If pc_TypeCommand = "SP" Then
ln_High = UBound(parr_Spprm())
If ln_High > 1 And (ln_High + 1) Mod 2 <> 0 Then
execADO_Sql = Null
MsgBox "Äëÿ õðàíèìîé ïðîöåäóðû ïàðàìåòðû äîëæíû ïåðåäàâàòüñÿ ïîïàðíî â âèäå <èìÿ ïàðàìåòðà>, <çíà÷åíèå>, <èìÿ ïàðàìåòðà>, <çíà÷åíèå>"
Exit Function
End If
End If
If OpenConnect = False Then
execADO_Sql = Null
Exit Function
End If

On Error GoTo ErrorHandler
Set tmp_cmd = New ADODB.Command
tmp_cmd.ActiveConnection = cnn
tmp_cmd.CommandText = pc_SqlCommand
tmp_cmd.CommandType = IIf(pc_TypeCommand = "SP", adCmdStoredProc, IIf(pc_TypeCommand = "Text", adCmdText, adCmdUnknown))
If pc_TypeCommand = "SP" Then
If ln_High > -1 Then
For ln_Low = 0 To ln_High Step 2
tmp_cmd.Parameters(IIf(Left(parr_Spprm(ln_Low), 1) = "@", "", "@") & parr_Spprm(ln_Low)) = parr_Spprm(ln_Low + 1)
Next ln_Low
End If
End If

tmp_cmd.Execute Options:=adExecuteNoRecords
If pc_TypeCommand = "SP" Then
For Each tmp_prm In tmp_cmd.Parameters
If tmp_prm.Direction = adParamOutput Or tmp_prm.Direction = adParamInputOutput Then
ll_ExistRetParam = True
execADO_Sql = tmp_prm.Value
Exit For
End If
Next tmp_prm
End If
If ll_ExistRetParam = False Then
execADO_Sql = 1
End If

ExitHere:
Set tmp_cmd = Nothing
Exit Function

ErrorHandler:
On Error GoTo 0
execADO_Sql = Null
Call about_error(Err, " SQL-ERR")
Resume ExitHere
End Function






Public Function Load_dataODBC(pc_Name_SP As String, pc_LocalTblName As String, pl_NoBindTbl As Boolean, ParamArray parr_Spprm() As Variant) As Long

Dim dbsCurrent As Database, ln_Low As Integer, ln_High As Integer, lc_NameTbl As String, _
qdfPassThrough As QueryDef, qdfLocal As QueryDef, lc_QuertySQLName As String, lc_QuertyLocalName As String, _
lu_Val As Variant, lu_InVal As Variant, lnPoz As Integer, lc_StrSql As String

ln_High = UBound(parr_Spprm())
If ln_High > 1 And (ln_High + 1) Mod 2 <> 0 Then
Load_dataODBC = -5
MsgBox "Äëÿ õðàíèìîé ïðîöåäóðû ïàðàìåòðû äîëæíû ïåðåäàâàòüñÿ ïîïàðíî â âèäå <èìÿ ïàðàìåòðà>, <çíà÷åíèå>, <èìÿ ïàðàìåòðà>, <çíà÷åíèå>"
Exit Function
End If
If OpenConnect = False Then
Load_dataODBC = -4
Exit Function
End If

Set dbsCurrent = CurrentDb()
lc_QuertySQLName = "tmp_Q"
lc_QuertyLocalName = "tmp_From"
lc_NameTbl = IIf(Len(Trim(pc_LocalTblName)) > 1, pc_LocalTblName, "tmp_" & frm.name)
lc_StrSql = pc_Name_SP

On Error GoTo ErrorHandler0
If ln_High > -1 Then
For ln_Low = 0 To ln_High Step 2
lu_InVal = parr_Spprm(ln_Low + 1)
If IsNull(lu_InVal) Then
lu_Val = "NULL"
ElseIf IsDate(lu_InVal) Then
lu_Val = "'" & DTOS(lu_InVal) & "'"
ElseIf VarType(lu_InVal) = vbDecimal Or VarType(lu_InVal) = vbDouble Or VarType(lu_InVal) = vbSingle Then
lu_Val = CStr(lu_InVal)
lnPoz = InStr(1, lu_Val, ",")
If lnPoz = 0 Then
lu_Val = "'" & lu_Val & "'"
Else
lu_Val = "'" & Left(lu_Val, lnPoz - 1) & "." & Mid(lu_Val, lnPoz + 1) & "'"
End If
Else
lu_Val = "'" & Trim(CStr(lu_InVal)) & "'"
End If
lc_StrSql = lc_StrSql & IIf(Left(parr_Spprm(ln_Low), 1) = "@", " ", " @") & parr_Spprm(ln_Low) _
& "= " & lu_Val & ","
Next ln_Low
End If
lc_StrSql = IIf(Right(lc_StrSql, 1) = ",", Left(lc_StrSql, Len(lc_StrSql) - 1), lc_StrSql)
'MsgBox lc_StrSql

On Error GoTo ErrorHandler1
Screen.MousePointer = 11
If CheckQuery(lc_QuertySQLName) Then
Set qdfPassThrough = dbsCurrent.QueryDefs(lc_QuertySQLName)
Else
Set qdfPassThrough = dbsCurrent.CreateQueryDef(lc_QuertySQLName)
End If
qdfPassThrough.Connect = pc_ODBCSqlConnection
qdfPassThrough.ReturnsRecords = True
If CheckQuery(lc_QuertyLocalName) Then
Set qdfLocal = dbsCurrent.QueryDefs(lc_QuertyLocalName)
Else
Set qdfLocal = dbsCurrent.CreateQueryDef(lc_QuertyLocalName)
End If


qdfPassThrough.SQL = lc_StrSql
qdfLocal.SQL = "SELECT * INTO " & lc_NameTbl & " FROM " & lc_QuertySQLName
If pl_NoBindTbl = False Then
frm.RecordSource = ""
End If
If CheckTable(lc_NameTbl) Then
dbsCurrent.TableDefs.Delete lc_NameTbl
dbsCurrent.TableDefs.Refresh
End If
On Error GoTo ErrorHandler2
dbsCurrent.QueryDefs(lc_QuertyLocalName).Execute

Load_dataODBC = 1
If pl_NoBindTbl = False Then
frm.RecordSource = lc_NameTbl
End If

ExitHere:
Screen.MousePointer = 0
Set dbsCurrent = Nothing
qdfPassThrough.Close
Set qdfPassThrough = Nothing
Set qdfLocal = Nothing
Exit Function
......
...
Рейтинг: 0 / 0
13.03.2003, 16:19
    #32119517
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Что то я не совсем понимаю смысл заливания данных в локальные таблицы.
Ведь эти наборы данных во первых: получаются статичные, а во вторых при любых изменениях этих таблиц на сервере их что опять закачивать полностью? И где же тут в таком случае клиент-сервер?

А через ADO, насколько я знаю, можно закачать данные с сервера в рекордсет, а потом сбросить их (не по записям, а одним пакетом) куда угодно. Или в текущую БД или в рядом лежашую, или вообще просто в текстовый файл. Табличка с 5 тыс. записей грузится и сохраняется не дольше пары секунд.

И какая в ADP нужна свобода? Мы получаем тонкий клиент. Всё можно обрабатывать на сервере (может быть это конечно крайность, но на сервере то обработаеться быстрее). Или есть что-то, что нельзя сделать прямо на сервере?
...
Рейтинг: 0 / 0
13.03.2003, 18:27
    #32119639
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
ЧЁРТ ... я наверное не так понял то что написано в книге, но из АДОшного рекордсета данные можно сбросить только в файл. А для того чтобы запихать их в локальную таблицу нужно перенести "ручками" все записи из одного рекордсета в другой, но это работает тормознуто, даже при использовании пакетных обновлений UpdateBatch.
...
Рейтинг: 0 / 0
13.03.2003, 19:17
    #32119677
superbluesman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
to Mind:

мне нужна та свобода, чтобы можно было старые dbf-таблицы, mdb-базы прилинковывать, кроме того, я могу просто посмотреть. чего прилетело мне на клиента и выполнить какую-то обработку, ту, что не обязательно крутить на сервере.

работа с Visual FoxPro+MS SQL - Там ведь тоже такой принцип, только Remote View - это временные курсоры (почитай временные таблички)

сбрасывая данные с сервера в локальные таблицы, я могу и отключиться от сервера и работать в офф-лайне, потом подключиться и выполнить синхронизацию. Если надо видеть свежие данные, то можно либо по нажатию кнопочки или по таймеру перезапрашивать данные, чтобы увидеть изменения других юзеров
в конце концов, в качестве источника формы я могу установить динамический ADO-recordSet и смотреть, чего там на сервере, но пока система реального времени мне не нужна. И потом, работая через Инет с базой, Вы ведь тожа получаете данные по перезапросу, ведь так??? А вот побороться за минимизацию количества получаемых записей с сервера - тут надо
...
Рейтинг: 0 / 0
14.03.2003, 11:05
    #32119950
Suslik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
Я как-то уже писал...

Не надо перегонять строки из Recordset в локальные таблицы. Вместо этого можно создавать временную таблицу на SQL Server и её подлинковать к Access, после чего натравить на неё отчёт.

Либо можно постоянно держать и обновлять на SQL Server таблицы специально для хранения в них данных для отчётов и эти таблицы постоянно держать подлинковаными.

Ясное дело, для форм это не проходит, но (об этом я уже тоже писал), использование для ввода даных в базу форм, основанных на таблице, - это моветон на мой взгляд...
...
Рейтинг: 0 / 0
28.03.2003, 08:29
    #32128660
AndreiTsl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будет ли жить такой проект? mdb + MS SQL Server
У меня проект с такой архитектурой прекпасно работает. Пользователи подключаются к серверу в Торонто из Эдмонтона, Виннипега, Монреаля, Оттавы, Галифакса, и еще из каких то городов в Канаде. Лично проверял при примерно 30 юзерах, все работает. Формы есть достаточно тяжелые, но все они disconnected, а данные тащатся с сервака через ADO. Пришлось конечно кучу кода на серваке писать, но скорость получается неплохая. А а насчет прокупки скажу что покупают систему, и весьма неплохо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Будет ли жить такой проект? mdb + MS SQL Server / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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