Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» InterBase и FireBird: вопросы по работе и их решение

Автор: Boris777
Дата сообщения: 24.07.2007 11:52
Первый раз переустановил. После останавливал, а затем запускал сервер
Автор: OXDBA
Дата сообщения: 24.07.2007 13:14
Control services error 1061 - сообщение о том, что служба не отвечает. А вот почему... UDF используются? В логе еще ошибки есть? Полная версия FB какая?
Автор: daMIR
Дата сообщения: 11.09.2007 08:56
Ситуация такая- стоит IBExpert, он цепляется к Б/Д в виде одного файла gdb, IBExpert пишет про эту базу: WI-V5.6.0.29. Если я правильно понял то это древняя InterBase
В общем нужно через обработку в 1С сделать новую запись в этой базе. Общий алгоритм понятен, это будет SQL-запрос через OLE. Не понятно только как подцепить генератор для автоматической нумерации полей в таблице. Т.е. как создать новую запись в БД примерно представляю, а как присвоить очередной номер в ячейке? Как это сделать?
З.Ы. С InterBase не работал, я 1С-ик, просто начальство задачу поставило, надо решить, вот ищу хоть какую-то инфу
Автор: OXDBA
Дата сообщения: 11.09.2007 09:58
daMIR
insert into Наименование_твоей_таблицы(Наименование_твоего_поля ,.....)
values(GEN_ID(Наименование_твоего_генератора, 1), ....)
Вся инфа здесь
Автор: Tantos
Дата сообщения: 12.09.2007 02:19
А что, генератор не стоит на PrimaryKey? Есть такая фишка - триггер+генератор и получается autoincrement
Автор: OXDBA
Дата сообщения: 19.09.2007 11:51

Цитата:
Переинстал firebird помогло немного, в делфи и IBE пошло подключение локально... но если запускать на др. компе выдает все ту же ошибку..."Unable to complete network request to host "localhost". Failed to establish a connection. Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение"

Ну так поставь там FB или как тебе уже говорил vserd используй embedded и локальное соединение.
P.S. переползли из темы Вопросы по Delphi (все версии) - часть 3
Автор: Botanik_IV
Дата сообщения: 19.09.2007 12:11
OXDBA

Цитата:
Ну так поставь там FB или как тебе уже говорил vserd используй embedded и локальное соединение.


не хочется на каждом клиенте вешать firebird...
базу сейчас уже подключаю локально...



Добавлено:
проверка коннекта в IBE на клиенте
Attempting to connect to:
C:\...\xxx.FDB

Connecting... Failed!
------------------------------------
Unsuccessful execution caused by an unavailable resource.
unavailable database.

Attempting to connect to services manager... Failed!
Автор: OXDBA
Дата сообщения: 19.09.2007 12:23

Цитата:
не хочется на каждом клиенте вешать firebird..

Так все, срочно покупаешь Firebird: руководство разработчика баз данных читаешь, что непонятно - задаешь вопросы.
Автор: Botanik_IV
Дата сообщения: 19.09.2007 14:23
OXDBA
Хорошая книжка, слава богу она в электронном виде появилась...
Автор: q2q2q2q2q2
Дата сообщения: 20.09.2007 18:53
Очень интересная информация, особенно по поводу триггеров.
Автор: jemiko
Дата сообщения: 21.09.2007 14:18
Помогите если можете примерчиком,

нужно вставить в таблицу несколько записей, а потом ИЛИ сохранить эти записи ИЛИ нет.
что нужно при этом сделать. FibPlus, FireBird.

Добавлено:
Извините за флуд,
кажется разобрался.

pFIBTransaction1.StartTransaction;

вставка записей

pFIBTransaction1.Commit;
pFIBDataSet1.Open;

если нет

pFIBTransaction1.Rollback;
pFIBDataSet1.Open;
Автор: savnick
Дата сообщения: 25.10.2007 08:56
Здравствуйте!

Firebird 1.5.4, delphi7, FIBPlus, EhLib
Есть следующие таблицы:

ОТДЕЛЫ
id
наименование


КАТЕГОРИИ_ТОВАРОВ
id
наименование

и таблица, показывающая какие категории есть в каждом из отделов
(отдельная таблица нужна, так как одна категория может встречаться в нескольких отделах)
таблица состоит из двух полей:
id_отдела
id_категории
объединенных в уникальный ключ

В приложении-клиенте есть форма на которой два dbgrideh - один отображает данные из
dataset отделов, другой из dataset категорий, между ними настроена связь master-detail.
В грид с категориями выбираются только категории соответсвующего отдела с помощью запроса к нескольким таблицам.

Вопрос следующий:
При добавлении в грид категорий новой записи она добавляется в таблицу категорий.
Как в этот момент организовать добавление записи в таблицу, связывающую отделы и категории???

Автор: ymg2000
Дата сообщения: 25.10.2007 12:00
savnick
Если просто при добавлении в табл. Категорий новой категории, то никак, т.к. у тебя в этот момент ни в одном из отделов еще нет этой этой категории. Добавление записи в эту таб. нужно организовать при привязке категории к отделу, т.е. нарпимер, по Drag&Drop из классификатора Категорий в табл. Отделов.
Второй вариант, завести Отдел что-то типа склада на случай, когда-еще неизвестно, к каким отделам данная категория должна принадлежать. В этом случае формирование записи можно посадить на триггер AfterInsert для Категорий с привязкой новой категории к отделу-складу.
Автор: Tantos
Дата сообщения: 26.10.2007 02:08
savnick, посмотри в сторону CachedUpdates и связки master-detail. На devrace.com есть хорошие статьи по этой теме.
Автор: vserd
Дата сообщения: 26.10.2007 12:16
savnick

Цитата:
При добавлении в грид категорий новой записи она добавляется в таблицу категорий.
Как в этот момент организовать добавление записи в таблицу, связывающую отделы и категории???

никак.
Потому что вставка записи в справочник категорий это одна независимая операция, а привязка категории к отделу это другая независимая операция.
И в общем случае может делаться разными людьми по правам доступа.
Автор: DroN_S
Дата сообщения: 30.10.2007 06:35
jemiko
лучше любые вставки делать через хранимки....
перекладывать все на сервер и снимать всё с клиента...

Код:
pFIBTransaction1.StartTransaction; //вот этого не надо делать, будет ошибка
//при открыти TDatabase, транзакция стартует автоматически
spIns_New_Kvit.ParamByName('NOMER_KVIT_ID').AsInteger := dm.IMain.FieldByName('ID').AsInteger;//номер квитанции
spIns_New_Kvit.ParamByName('SUM_PROPIS').AsString := lblSumProp.Caption;

try
spIns_New_Kvit.ExecProc; //выполняем хранимку
spIns_New_Kvit.Transaction.CommitRetaining; //если все хорошо, подтверждаем транзакцию
except //исключение
on E:Exception do
begin
ch:= PChar(e.Message); //показываем ошибку, чтобы не чесать репу о том что сказала нам СУБД
if Application.MessageBox(PChar(ch),'АРМ',MB_OK + MB_ICONERROR) = IDOK then
spIns_New_Kvit.Transaction.RollbackRetaining;
end;
end;
Автор: OXDBA
Дата сообщения: 30.10.2007 11:07
DroN_S

Цитата:
при открыти TDatabase, транзакция стартует автоматически

Чего-чего??? spIns_New_Kvit.Options.goStartTransaction сбрось в False и посмотри...
или spIns_New_Kvit.Transaction = dm.IMain.Transaction?

Цитата:

spIns_New_Kvit.Transaction.CommitRetaining
...
spIns_New_Kvit.Transaction.RollbackRetaining;

Не надо учить людей плохому и сам больше так не делай.

Автор: DroN_S
Дата сообщения: 30.10.2007 14:47

Цитата:
spIns_New_Kvit.Options.goStartTransaction сбрось в False и посмотри...

если стоит в фальшь то да, но goStartTransaction := True стоит по умолчанию...
двойной старт транзакции приведёт в фатальной ошибке...

Цитата:
Не надо учить людей плохому и сам больше так не делай.

распиши что не так?
Автор: OXDBA
Дата сообщения: 30.10.2007 16:02

Цитата:
если стоит в фальшь то да, но goStartTransaction := True стоит по умолчанию...

Вот и я о том, что pFIBDatabase1 никакого отношения к старту pFIBTransaction1 не имеет.

Цитата:
распиши что не так?

Ну лучше Кузьменко я все равно не распишу, поэтому
Транзакции в InterBase
и дальше по списку в конце статьи.
Хотя странно, судя по дате старта темы, вопросов по OIT, OAT, сборке мусора и т.д. и т.п. у тебя уже не должно быть
Автор: eap
Дата сообщения: 12.11.2007 18:23
Уважаемые специалисты! Помогите простому админу. Есть программа контроля доступа, которая в interbase ведет учет сотрудников и время их прохода через турникеты. Понадобилось ввести новый Facility Cod карточек через Конфигуратор - Программу настройки системы. Получаю сообщение, что база данных заблокирована другим экземпляром Конфигуратора в июле месяце, возможен только доступ в режиме просмотра. То есть, в июле был сбой питания на сервере, при этом был включен конфигуратор. При всех выключенных программах Контроля доступа в Консоли interbase есть 3 подключения. При этом программа для ввода пропусков исправно работает - возможна одновременная работа с нескольких рабочих мест - и висящие сессии не влияют на ее работу. Методом научного тыка через консоль я не смог ничего добиться. Версия IB - 7.1.
Подскажите, как отключить зависшие сессии доступа к БД или где об этом написано. У меня есть документация по работе с программой контроля доступа, но не с БД.
Автор: OXDBA
Дата сообщения: 13.11.2007 10:19

Цитата:
Подскажите, как отключить зависшие сессии доступа к БД или где об этом написано

Написано об этом в документации на IB, которая поставляется вместе с дистрибутивом IB К сожалению моя дружба с InterBase закончилась еще на версии 5.6, но насколько я помню в семерке появились временные системные таблицы, попробуй поиграться с TMP$STATE в TMP$ATTACHMENTS, только резервную копию базы сделать не забудь.
P.S. Программа - APACS или WinPak?
Автор: eap
Дата сообщения: 13.11.2007 13:31
Программа APAKS, как оказалось, имеет ключ UNLOCK, не прописанный в документации. Так что спасибо, все уже хорошо! Проблема снята.
Автор: ZalivkoDenis
Дата сообщения: 05.02.2008 13:56
Доброго времени суток всем!
У меня вот такая проблема (может кто-нить встречался).
Решил поставить на сервер MS Windows 2003 Server R2 (два двухядерных проца, 2Gb) FireBird 2.1.0 (предварительно оттестировав производительность и существующие базы на Workstation).
Всё вроде-бы ничего, рабтает (на сервере), но ТАААК медленно -- просто жуть. Запросы на сервере В ДЕСЯТКИ раз медленнее отрабатывают, чем на обычной машине (по обоим протоколам: локальному и TCP). Загрузка ядер на сервере -- минимальная (просто кошмар -- как будто он и не работает вовсе!).
Что можно сделать (может у кого-нить есть опыт в решении этой проблемы).

априори: ставил Classic, из настроек Firebird -- только разрешения к папке хранения баз данных, сеть имеет доменную структуру.

P.S. На одном из форумов читал, что

Цитата:
У нас был случай когда WIN 2000 Server отобрал память у сервера Firebird в пользу системного кеша, куда пытался "затолкать" разрошийся файл базы данных. Выличилось насторйкой в системном реестре, которая отвечает за распеределение физической памяти между файловым кешем операционной системы и приложениями. Как называется ключ реестра, к сожалению забыл...

Может из вас кто-нибудь помнит? Или можно как-нибудь по-другому это дело вылечить?
Автор: LeaF_AVF
Дата сообщения: 05.02.2008 16:22
ZalivkoDenis

Цитата:
из настроек Firebird -- только разрешения к папке хранения баз данных

это - вообще не нужно, доступ к файлу базы должен иметь только аккаунт SYSTEM (от его имени и работает сервер Firebird)

сам со 2-й версией пока плотно не работал. Устраивает пока 1.53 (на Win2k)
Если есть возможность попробуй с ней

P.S. на 2003 есть восстановление системы?
Автор: Tantos
Дата сообщения: 06.02.2008 01:36
ZalivkoDenis, отключи двухядерность для Firebird'a: Hyperthreading & SMP + InterBase, Firebird, Yaffil
Автор: ZalivkoDenis
Дата сообщения: 06.02.2008 08:26
Tantos
За совет -- спасибо! Но, этот HT отключается, я так понял, для всего сервера (физического)? Это правильно? (Извиняюсь за ламерский вопрос, но совсем недавно получил в эксплуатацию эту машинку, -- не скажется ли это на производительности других приложений (серверов). Ещё раз прошу прощения, если спросил чушь.)
Автор: Tantos
Дата сообщения: 07.02.2008 02:42
ZalivkoDenis, в принципе, да. Но где-то видел программу, которая это делает для отдельных приложений.
Автор: ZalivkoDenis
Дата сообщения: 07.02.2008 16:07
Путём долгих, продолжительных мучений, экспериментально -- заработал Firebird-2.1.0.17735_0 RC1 Superserver.
А вот Classic на любой машине на великом-великом ручнике (ОООЧЕНЬ сильно тормозит и от НТ это совсем не зависит ) Скорее всего это происходит из-за RC1
Вывод:
для версии Firebird-2.1.0.17735_0 RC1 использовать ВСЕГДА Superserver!

P.S. ДОждёмся релиза. Может там всё будет ОК. (потерял почти неделю -- это, видимо, и есть плата за бесплатность )

Всем СПАСИБО за помощь!
Автор: ZalivkoDenis
Дата сообщения: 06.03.2008 13:42
Доброго всем времени суток!
Так кто-нить работал с FB 2.1? Есть вопрос...
Автор: cesare
Дата сообщения: 01.04.2008 17:28
Доброго дня!
Кто-нибудь имел положительный опыт установки и эксплуатации Firebird на UNIX (в крайнем случае Linux)? Хочу под сервер баз данных отдельный железный сервер. Посоветовали туда поставить UNIX. А какой UNIX - я не знаю
Названия разные знаю, а вот опыта работы - 0.

Поможете?!

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

Предыдущая тема: Сравнение двух строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.