Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Позволил себе повторно "поднять" тему, так как проблема не решена а касается всех (почти). Итак, есть Linked Server для доступа к Dbf файлам, описан следующим образом. sp_addlinkedserver @server = 'MYDBFs', @provider = 'Microsoft.Jet.OLEDB.4.0', @srvproduct = 'OLE DB Provider for Jet', @datasrc = 'D:\ARHIV', @provstr = 'dBASE IV' при обращении к такому серверу расходуются ресурсы (доступная память и хендлес), это видно в Task Manager, при многократном вызове машина вешается с ошибкой. Server: Msg 7399, Level 16, State 1, Line 6 OLE DB provider 'Microsoft.Jet.OLEDB.4.0' reported an error. The provider did not give any information about the error. Код дающий такую ошибку: DECLARE @i int SET @i = 1 WHILE @i < 1000 BEGIN IF EXISTS (SELECT * FROM sysobjects WHERE (name = N'MyBase')) BEGIN INSERT INTO MyBase SELECT * FROM mydbfs...MyBase END ELSE BEGIN SELECT * INTO MyBase FROM mydbfs...MyBase END SET @i = @i + 1 PRINT @i END Кстати это не единственный возможный вариант. Все что использует связку mydbfs...MyBase будет забирать ресурсы и в конечном итоге приведет к краху системы В прошлый раз Glory сказал, что на его машине "W2k Server SP2" все нормально, но я так и не смог добится нормальной работы (пробовал на разных машинах) вот примеры конфигураций где удалось протестировать (выдает по SELECT @@VERSION). Microsoft SQL Server 7.00 - 7.00.842 (Intel X86) Mar 2 2000 06:49:37 Copyright (c) 1988-1998 Microsoft Corporation Standard Edition on Windows NT 4.0 (Build 1381: Service Pack 5) Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Standard Edition on Windows NT 4.0 (Build 1381: Service Pack 5) Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Developer Edition on Windows NT 5.0 (Build 2195: ) Microsoft SQL Server 2000 - 8.00.534 (Intel X86) Nov 19 2001 13:23:50 Copyright (c) 1988-2000 Microsoft Corporation Developer Edition on Windows NT 5.0 (Build 2195: Service Pack 2) Думаю что Glory тестировал код на рабочей станции а я всегда имел в виду сервер (вот так и не поняли друг друга). Хорошо если я ошибаюсь а пока выводы неутешительные - интенсивно использовать Linked Server нельзя! Т.к. это приводит к (сначала торможению) а потом и зависанию сервера. Неважно откуда программа выполнит обращение к Linked Server ресурсы расходуются на той машине где он создан (на сервере). Инструкция для тех кто захочет проверить или опровергнуть мое заявление. 1. открываем - Task Manager (Ctrl+Alt+Del нажать кнопку) 2. открываем SQL Query Analizer (на сервере! где установлен SQL) 3. Запускаем в окне кусок кода создающей Linked Server (в пути поставьте реальный путь к любому DBF файлу). 4. Запускаем цикл. 5. Ждем результатов, попутно расматривая растущие Hendles и уменьшающуюся память. 6. Перегружаем сервер и никогда больше так не делаем. У кого результаты не такие печальные как у меня поделитесь как вы этого добились? (Все сервис паки у меня стоят, по крайней мере на одной машине) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2002, 19:12 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
А с OpenQuery или OpenRowset поиграть не пробовали? Как в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2002, 19:31 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
С OpenQuery пробовал, то же самое. С OpenRowset не пробовал, наверно тоже не получится. Я даже вставлял в инсерт SQLDisconnect и SQLFreeHandle хотя это совсем из другой оперы (но с другой стороны поставленная в конец инсерта команда ошибок не вызывает а значит может так и надо?). Неважно все равно не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 05:11 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Я пробовал предложенный когда-то вами код именно на консоли сервера из QA Microsoft SQL Server 2000 - 8.00.534 (Intel X86) Nov 19 2001 13:23:50 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 2) и у меня Windows2000 Advanced Server SP2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 06:41 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Тогда вообще не понимаю, единственная разница в релизах SQL у меня стандарт и девелопер а у тебя ентерпрайз. И всетаки хочется чтобы и у меня работало "правильно". Alexander_Chepack подтолкнул меня к повторным проверкам OpenQuery и OpenRowset и вот что получилось. если использовать драйвера ODBC sp_addlinkedserver @server = 'MYDBFs', @provider = 'MSDASQL.1', @srvproduct = 'ODBC data source', @provstr = 'Driver={Microsoft dBase Driver (*.dbf)};DBQ=D:\ARHIV;' то ошибка не возникает хенделы возвращаются по окончании запроса, правда обращатся можно только через OpenQuery (связки типа mydbfs...MyBase не получаются) INSERT INTO MyBase SELECT * FROM OpenQuery(SQLPubs, 'select * from MyBase') или через OpenRowset INSERT INTO MyBase SELECT * FROM OpenRowset('MSDASQL.1', 'Driver={Microsoft dBase Driver (*.dbf)};DBQ=D:\ARHIV;', 'select * from MyBase') обращение через OpenRowset предпочтительнее (не надо создавать Linked Server) но возникает проблема другого рода нельзя изменять Dbf таблици. а это иногда необходимо. Можно использовать другие драйвера например Driver=Microsoft Visual FoxPro Driver (единственный который я еще успел попробовать) но он выполняя апдейт Dbf-а виснет на конце файла, короче надо еще разбиратся. Glory особое вам спасибо, похоже никто кроме вас не проверял код. Но всеже не у всех конфигурация как у вас а работать должно на всех релизах (если они последние). А это значит у меня чтото не так с машиной а точнее с 4-мя на каких пробовал код и хотелось бы знать что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 19:36 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Очень похоже, что проблема все-таки в Jet.OLEDB, раз MSDASQL работает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 20:05 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Да похоже. Небольшое но прикольное дополнение, нормально работает MSDASQL.1 а а если написать MSDASQL то хендлы тоже растут (15-16) за вызов и не отдаются. У Jet.OLEDB сложней посчитать, забирается сразу гдето 80-120 около половины возвращается, короче после вызова не отдается 40-50. Glory вы писали что пробовали на файлах Visual Fox Pro, а судя по тому что его драйвер на моих файлах повисает, -? неоднозначные получаются файлы. Надо проверить, я нашёл у себя диск Fox Pro -шный сегодня проверю как у меня ведут себя файлы от Visual Fox Pro, вечером пропишу результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 05:25 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Результат пробы с файлами созданными Visual Fox Pro ничем не отличается от ранних результатов. И при дальнейшем обдумывании решил что Jet.OLEDB здесь не причем. Ведь все нормально работает при вызове из Delphi а в SQL простой SELECT FROM mydbfs...MyBase отбирает ресурсы. Люди! неужели ни у кого мыслей нет, ну хоть в каком направлении искать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 17:25 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Мне кажется дело все-таки в провайдере. У меня похожая история была при работе с Excel и dbf файлами. В то же время через linked server получаю данные из txt файлов и из Oracle - все в порядке. Причем job, принимающий данные из Oracle, срабатывает каждые две минуты. MS SQL Server 2000 SP2. Windows NT 4.0 SP6a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 20:40 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
У меня должно работать каждые пять секунд , из Exel-я я пробовал только память уменьшается хендлы не растут, c Acsess-ом вообще без проблем. На сайте Майкрософт признана подовного рода ошибка только для ORACLE и SQL 7.0. Про Dbf я ничего не нашол и до сих пор не избавился. Выдержка из рапорта об ошибке: BUG: Out of Memory Error Message Occurs When You Query an ORACLE Linked Server that has a Numeric Column (Q268520) -------------------------------------------------------------------------------- The information in this article applies to: Microsoft SQL Server version 7.0 -------------------------------------------------------------------------------- BUG #: 57982 (SQLBUG_70) и рекомендуемый способ решения: Use the ODBC driver for ORACLE that is provided by Microsoft: EXEC sp_addlinkedserver @server = 'ORACLEODBC', @srvproduct = 'MSDASQL', @provider = 'MSDASQL', @provstr = 'DRIVER={Microsoft ODBC for Oracle};SERVER=MyOracleServer;UID=USERNAME;PWD=Password;' go sp_addlinkedsrvlogin 'ORACLEODBC', false, NULL, 'USERNAME', 'Password' в принципе то же что и я "нарыл" собственными изысканиями но такому решению не хватает функциональности (не могу изменять dbf файлы) а это иногда необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 18:13 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
2 Nikolay: Вы говорите что с Access нет проблем, может попробовать подлинковать Ваш dbf из Access? Я как-то перекачивал mdb файл, заодно, вместе с таблицами Access, перекачал подлинкованные dbf, xls и txt файлы. Может получиться update-ть таким образом dbf? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2002, 07:45 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
2 Nikolay Действительно, в моем тестовом dbf файле не было числовых полей. Пришлите мне на brylyev@hotmal.com кусок вашего файла(скажем 1000 записей для ровного счета). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2002, 15:35 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
MadDog А как это можно сделать? В Access-е тоже есть Linked Server? или вы чтото другое имеете в ввиду? если перекачивать в Access средствами ADO(по записям) то это не выход по скорости это даже медленней чем сразу в SQL. обьясните как "подлинковать dbf" к Access-у? pls. Glory файл выслал хотя и не верю что чтото получится. т.е. наоборот у вас он скорей всего будет работать как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2002, 20:17 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
В закладке "Таблицы" нажмите "Создать", укажите "Связь с таблицами", далее выбирайте нужный файл нужного типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2002, 04:39 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Да действительно получилось. Надо еще протестировать как SQL будет себя вести на такой связке (главное позволит ли он изменять dbf-ки, решение о закачке dbf в SQL есть см.выше) ну и остальное, сегодня этим и займусь. И главное как их прилинковать програмно средствами SQL? Из Access-а не удобно да и его может вообще не быть на некоторых машинах. Ладно почитаю Help в Access-е по mdb SQL может и найду. Спасибо за идею, еще одно направление для поисков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2002, 05:21 |
|
||
|
Всех кто использует Linked Server касается. Ошибка!!!
|
|||
|---|---|---|---|
|
#18+
Пробовал связку SQL->MDB->DBF результат как всегда неутешительный. первое mdb-SQL-евских методов прилинковать Dbf к Mdb похоже нет (я не нашел) но даже если бы и были то второе вызов типа ,SELECT * FROM MyMdbLinkedServer...DbfTableLinkedToMdb, оказывает то же действие что и прилинкованый Dbf к SQL. Таблицу из Mdb берет нормально (загадка природы!). Кстати если смотреть в Enterprise Managar - е таблицы прилинкованые к Mdb не видны, а команды SELECT,INSERT,DELETE их обрабатывают. (если бы не эффект с памятью то можно было бы найти этому применение). и третье в Helpe Access-а встретил фразу, вроде "если прилинкованные dBASE файлы не обрабатываются то измените настройки" (дальше сохранил) Перейдите в подраздел \HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase и внесите необходимые изменения. Для получения сведений о настройке драйверов dBASE нажмите кнопку . (сведений о настройке нет кнопка никуда не ведет) Возможно изменения настроек в джете и помогут. Просьба к Glory не могли бы вы экспортнуть в regedit-е всю ветку \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet (раз уж у вас все нормально) и прислать мне для сравнения с моими настройками? адрес sniknik@rambler.ru , может Эдвансед Сервер как то по другому настраивает джет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2002, 12:40 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022265&tid=1823963]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 399ms |

| 0 / 0 |
