Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 12:42
Друзья, очень нужна помощь!
Использую в программе связь с базой Firebird 1.5 через ODBC-драйвер от Phoenix.
Программа работает некоторое достаточно продолжительное время, но затем возникает ошибка типа
"I/O error for file "C:\WINDOWS\TEMP\fb_sort_xxxxxx". Error while trying to open file. Недопустимые данные."
И после этого программа перестает получать данные из базы.
Такая же программа (одна и та же сборка) на другом компьютере, работающая параллельно, никаких ошибок не выдает, хотя работает с теми же данными.
Отчего может быть такая напасть и как с ней бороться?
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 30 авг 2007, 12:52
Место на диске кончилось.
Или старая файловая система не позволяет раздуть размер.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 12:56
WildSery писал(а):Место на диске кончилось.
Или старая файловая система не позволяет раздуть размер.
А с правами пользователя это может быть связано?
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 30 авг 2007, 13:15
В каталог C:\WINDOWS\TEMP\ ? Наверное. Я с виндусом редко.
FB у тебя как сервис или как приложение запускается? И от какого юзера, само собой.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 14:08
Вход идет с правами администратора. Свободное место на диске - 30 Гб. NTFS. FB работает на выделенном сервере как сервис. Подключение к нему идет по локалке посредством TCP/IP.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 14:30
А может помочь параметр TempDirectories на сервере?
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 30 авг 2007, 15:10
kmi писал(а):А может помочь параметр TempDirectories на сервере?
Вряд ли.
Программа эта самая, чего за запрос такой отправляет на сервер, что сортировочный файл создаётся, не смотрел?
Отправляет ли такой запрос тот, другой комп, и создаётся ли файл сортировки в этом случае? С теми же параметрами запрос?
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 15:13
Запросы Select. Все машины отправляют запросы одинаковые. Соответственно, файлы сортировки создаются в любом случае.
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 30 авг 2007, 15:37
kmi писал(а):Вход идет с правами администратора.
Тебя не это спрашивают. Тебя спрашивают под каким аккаунтом запущен сервер FB.
Собственно, при кривой БД и запросе сожрать 30ГБ под сортировку - нет ничего невозможного.
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 30 авг 2007, 15:52
kmi писал(а):Программа работает некоторое достаточно продолжительное время, но затем возникает ошибка типа
"I/O error for file "C:\WINDOWS\TEMP\fb_sort_xxxxxx". Error while trying to open file. Недопустимые данные."
Не знаю такой ошибки. Нужен точный текст
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 16:25
hvlad писал(а):Не знаю такой ошибки. Нужен точный текст
Это точный текст. Вместо xxxxxx указывается некоторая последовательность символов, делающая имя файла уникальной.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 16:28
Доступ к базе под SYSDBA
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 30 авг 2007, 18:26
kmi писал(а):Доступ к базе под SYSDBA
диск на проблемной машине живой? или это только кажется?
что ты в конфиге в параметре TempDirectories указал?
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 30 авг 2007, 18:31
Диск живой. Иначе бы вообще все умерло.
Конфигу пока не менял. Т.е. используется значение по умолчанию. Отсюда и Windows\Temp
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 30 авг 2007, 18:52
kmi писал(а):Это точный текст. Вместо xxxxxx указывается некоторая последовательность символов, делающая имя файла уникальной.
Скопируй строку из файла firebird.log, где эта ошибка написана.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 31 авг 2007, 19:35
В лог-файле ошибка отсутствует. Фиксируются только данные о разрывах и восстановлении подключения.
Установка параметра TempDirectories = e:\temp; f:\temp в файле конфигурации привела к тому, что ошибка с файлом сортировки исчезла, но возникла другая проблема. Некоторое количество клиентов подключается замечательно. Но затем подключения начинают отвергаться. Даже попытка подключения к расшаренной папке на сервере приводит к ошибке "Превышено максимальное количество подключений". В результате из 40 клиентов работает только 15. Впрочем, эти 15 работают корректно.
Если я комментирую параметр TempDirectories в файле конфигурации - все клиенты подключаются, но вновь возникают проблемы с сортировкой.
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 02 сен 2007, 09:52
kmi писал(а):
..........Но затем подключения начинают отвергаться. Даже попытка подключения к расшаренной папке на сервере приводит.......
А шара здесь каким боком и вообще нафиг?
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 03 сен 2007, 23:02
Шара тут привалилась хитро. Инженеры, ставившие систему, создали и расшарили папку, в которую слили дистрибутив, затем установили сервер Firebird, поместили базу и в конечном итоге загнали туда новую temp-папку...
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 18 сен 2007, 13:33
Проблема решилась. Дело в правах пользователей в локалке. Сеть была организована так, что большинство машин были в одной подсети в домене, а остальные, включая сервер, - в другой подсети и в домен не входили.
При входе со второй подсети проблем не наблюдалось. А вот при входе из домена на сервер, не включенный в домен, начинались траблы. Установка Firebird в C:\Program files приводила к появлению на сервере фантастического сообщения об отсутствии файла aliases.conf, хотя он явно присутствовал. Сообщение появлялось при любой попытке подключения к серверу из домена.
Решений может быть два. Первое - ввод сервера в домен. А второе - конфигурирование Firebird таким образом, чтобы все файлы, с которыми он работает, находились вне системных папок. В частности, сам Firebird следует ставить в отдельный каталог и прописывать в firebird.conf путь к отдельному каталогу временных файлов.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 18 сен 2007, 17:43
коннектиться надо по tcp, а не по netbeui.
строку коннекта приведи?