Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Добрый день всем!
В MSSQL 2012 имеется связанный сервер - файл access с данными. Иногда приходится с ним работать. Несмотря на то, что файл располагается на локальном диске сервера - работа происходит ооочень медленно.
Возможно есть способы сделать эту связь более быстрой?
Заранее благодарю!
25 июн 15, 13:29    [17815268]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Glory
Member

Откуда:
Сообщений: 104751
dt88
Возможно есть способы сделать эту связь более быстрой?

А почему решили, что проблема именно в "связи" ? А не в вами написанной коде "работы" ?
25 июн 15, 13:31    [17815279]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Glory,
потому что даже запрос SELECT * FROM table; работает в сотню или тысячу раз медленней, чем в Access напрямую.
25 июн 15, 13:55    [17815431]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Glory
Member

Откуда:
Сообщений: 104751
dt88
работает в сотню или тысячу раз медленней

По своим командирским часам засекали ?
25 июн 15, 13:57    [17815444]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1578
dt88
Glory,
потому что даже запрос SELECT * FROM table; работает в сотню или тысячу раз медленней, чем в Access напрямую.
А ничего, что вы в этом случае сравниваете теплое с мягким? По по способам доступа к данным.
25 июн 15, 14:22    [17815619]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Glory,
Нет, на вскидку. а командирские часы такое выдают:
Access - 0,39 секунд (насколько приближенно это позволяет посчитать Access)
MsSQL - 44 секунды (SELECT * из таблицы Access связанного сервера. )
Таблица 7165 строк.
25 июн 15, 14:31    [17815657]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Sergey Sizov,
тогда может быть правильный вопрос будет - как лучшим образом из MsSQL получить данные из таблиц Access ? Если такое возможно.
25 июн 15, 14:33    [17815671]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Glory
Member

Откуда:
Сообщений: 104751
dt88
Access - 0,39 секунд (насколько приближенно это позволяет посчитать Access)
MsSQL - 44 секунды (SELECT * из таблицы Access связанного сервера. )

А в первом случае вы к Access из какой программы обращаетесь ?
25 июн 15, 14:37    [17815683]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Glory,
из Access непосредственно. во втором случае из SQL management.
Возможно это не корректно? Просто предположил что скорость доступа к данным должна быть хоть как-то схожа.
25 июн 15, 14:42    [17815723]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Glory
Member

Откуда:
Сообщений: 104751
dt88
из Access непосредственно. во втором случае из SQL management.
\
Т.е. вы сравниваете внутренний доступ самого Access с доступом через драйвер ?
25 июн 15, 14:43    [17815739]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Glory,
Если я ничего не путаю, то выходит - да. И как раз вопрос - можно ли более эффективно работать через драйвер с Access? Или если зайти с другой стороны - то в Access появляются необходимые для вставки в MsSQL данные. Поэтому MsSQL лезет в Access и берет необходимую информацию.
Может быть это можно сделать по-другому?
25 июн 15, 15:13    [17815883]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Glory
Member

Откуда:
Сообщений: 104751
dt88
Может быть это можно сделать по-другому?

Для того, чтобы что-то делать по-другому, нужно знать
- версии продуктов
- решаемую задачу (лезет и берет информацию - это не задача)
25 июн 15, 15:15    [17815898]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Glory,
Access 2003
MsSQL Server 2012

Задача такая - что текущее приложение крутится на Access. Решено было переходить на MsSQL (Access в качестве пользовательского интерфейса). В целях тестирования нового приложения - перебрасываем данные, наработанные из текущей базы Access раз в сутки.
В принципе по времени занимает не очень много (скажем так, для наших задач - терпимо), и тут проблем нету особых. Проблемы начались в том, что я хотел для контроля корректности переброса сделать сверку кол-ва строк после переброса в Access и в аналогичных таблицах MsSQL (т.к. не всегда данные перебрасываются в полном объеме по разным причинам). И соотвественно запрос типа SELECT count(*) FROM table; к Access через драйвер, на стороне MsSQL выполняется гораздо дольше чем хотелось бы.
а как глобальная задача - быстрая проверка что все необходимые таблицы в Access и MsSQL идентичны на момент окончания переброса данных.
25 июн 15, 15:21    [17815948]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Glory
Member

Откуда:
Сообщений: 104751
dt88
Задача такая - что текущее приложение крутится на Access. Решено было переходить на MsSQL (Access в качестве пользовательского интерфейса).

Разве Access 2003 уже не на движке MsSQL ?
25 июн 15, 15:23    [17815969]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
dt88, а вы ко времени запроса в Access добавили время запуска самого приложения Access?

Ведь при доступе из SQL Server'а необходимо сначала запустить систему управления базой данных Access, и потом уже подключаться к ней - читать данные, а в Access вы измеряете только время чтения данных.
25 июн 15, 15:37    [17816045]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Попробуйте сквозные запросы, т.е.

select * from openquery()
25 июн 15, 16:44    [17816425]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Близнец1980
Member

Откуда:
Сообщений: 100
dt88
Glory,
Решено было переходить на MsSQL (Access в качестве пользовательского интерфейса)


Если Access будет в качестве пользовательского интерфейса тогда Вы, наверно, уже в нем создали связанные таблицы.
Ну так из Accessа и выполняйте запросы к MSSQL (а не наоборот, как сейчас Вы делаете).
У меня скорость сопоставимая, что из Access к MSSQL по сети, что из SQL management на сервере к MSSQL.
26 июн 15, 07:28    [17818221]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Близнец1980,
Тут беда в том, что есть два файла Access - старый (без связанных таблиц с MsSQL) и новый (со связанными к MsSQL). Если бы их можно было совместить в одном файле (работать и с теми и с другими таблицами одновременно) стандартными средствами - проблемы бы скорее всего и не возникло такой.
26 июн 15, 09:22    [17818397]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Minamoto,
Вы правы, считал только время выполнения запроса при запущенной среде Access.
26 июн 15, 09:23    [17818403]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
Близнец1980
Member

Откуда:
Сообщений: 100
dt88
я хотел для контроля корректности переброса сделать сверку кол-ва строк после переброса в Access и в аналогичных таблицах MsSQL
а как глобальная задача - быстрая проверка что все необходимые таблицы в Access и MsSQL идентичны на момент окончания переброса данных.

А что мешает проверку в Access делать в первом файле, а в MSSQL из второго (который связан) ?
Вы просто это делаете наоборот - из SQL Server Management Studio, проверяете и там и там.

Или я что-то не догоняю...

P.S.
Как-то мне нужно было связать DBF таблицы, так тоже тормоза жуткие были, сейчас уже не помню, но где-то 40-50 сек выполнялся запрос типа select * from DBF_table связанного сервера при кол-ве записей около 25-30 тыс.
Бросил это гиблое дело, походу связанный сервер только для SQL сервера подходит.
26 июн 15, 12:11    [17819560]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
dt88
Добрый день всем!
В MSSQL 2012 имеется связанный сервер - файл access с данными. Иногда приходится с ним работать. Несмотря на то, что файл располагается на локальном диске сервера - работа происходит ооочень медленно.
Возможно есть способы сделать эту связь более быстрой?
Заранее благодарю!


Чтобы быстрее было, сделайте двухходовку через OPENQUERY и временную таблицу:

select * into #tmp from OPENQUERY(...., 'select * from table');
select * from #tmp;
26 июн 15, 12:48    [17819774]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер Access  [new]
dt88
Member

Откуда:
Сообщений: 92
Владислав Колосов,
ziktuw,
спасибо огромное. В заметно быстрее стало работать!

Близнец1980,
по таймеру процедура авто-выгрузки в MsSQL происходит. Поэтому и хотелось в пределах одного большого запроса всё сделать. В принципе OPENTUERY() очень выручила, как подсказали выше
26 июн 15, 13:43    [17820107]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить