Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3]  Все   Вниз
  Печать  
Автор Тема: InterBase  (Прочитано 89500 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
FoxVID
Гость
« Ответ #60 : 13-03-2004 11:01 » 

Цитата

Скачиваю Firebird-1.0.3.972-Win32.zip

Так есть уже Firebird-1.5.0.4306-Win32.exe :?:
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #61 : 14-03-2004 11:13 » 

Never, правильно, нет. заходишь в источники данных, жмёшь новый, настраиваешь параметры, тестируешь соединение, сохраняешь, и тогда он появится.
Записан

cvaleriy
Гость
« Ответ #62 : 12-04-2004 13:41 » 

Всем доброго здравия !
Хочу проконсультироваться со знающими людьми.
Есть около 30 полей в одной таблице. Регулярно туда будут добавляться данные примерно по 20-50 записей. Как это лучше реализовать, в смысле мне так кажется напрягать сервер на каждую запись не правильно, можно ли в ИБ за одну транзакцию отправить данные (все записи) и как это сделать или где об этом прочитать. Заранее спасибо. :?:
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #63 : 12-04-2004 14:21 » 

cvaleriy, можно. транзакции для этого и существуют. вопрос в следующем: если данные добавляются единовременно, то однозначно стоит это делать в рамках одной транзакции, а вот если они добавляются по одной штуке в течении дня, то держать весь день открытой транзакцию не стоит, лучше всего стартовать и закрывать её сразу, на одну вставку.

со вторым вариантом, я думаю, и так всё понятно, остановлюсь вкратце на первом, а именно - единовременная вставка нескольких записей.

существует два способа:

1. делать всё на уровне клиента
здесь всё зависит от среды разработки. в дельфи/билдере есть стандартные компоненты, TIbTransaction, у которых есть методы StartTransaction, Commit и RollBack. начиная с версии 6.0 появились методы CommitRetaining и RollBackRetaining. они делают то же самое, что и их аналоги, но "с сохранением контекста существующей транзакции". если Commit и RollBack, фактически, закрывают транзакцию (после их вызова придётся переоткрывать заново таблицы, т.к. они окажуться закрытыми), то XXXRetaining внесёт данные и оставит транзакцию запущенной. соответственно, переоткрывать ничего не придётся.  у этого есть свой минус: если у вставляемой записи, к примеру, заданы дефолтовые значения (которые заполняются на уровне сервера, клиент о них не имеет понятия), то после вставки и вызова CommitRetaining эти значения попадут в базу, но в клиенте не будут видны. а вот при использовании обычного Commit - это исключено, т.к. после него придётся переоткрыть таблицу, что приведёт к автоматическому (или ручному) запуску новой транзакции, которая зацепит все данные, в т.ч. и те, что были внесены на стороне сервера. то же самое можно сказать и про триггера: если они меняют какие-то данные, при вызове CommitRetaining эти данные не отобразяться. всё это справедливо не только для дельфей и билдера, это стандартные функции интербейсовского api, которые работают одинаково в любых средах.

а что касается дельфей, то там это выглядит примерно так:

Код:

IbTransaction.StartTransaction;
try
  IbTable1.Insert;
  ...
  IbTable1.Post;
  IbTransaction.Commit;
except

  IbTransaction.Rollback;
end;

при необходимости можно вставить команды на старт новой транзакции и открытие таблицы, т.к. после вызова Commit она будет закрыта, либо, если струткура базы позволяет, использовать CommitRetainnig.

2. делать всё на уровне сервера, т.е. средствами sql.
это означает, что ты формируешь огромадный (относительно, конечно) скрипт, вида:

set transaction ...
exec sql ...
commit ...

и выполняешь его на сервере. учитывая твои объёмы данных, мне кажется, это не самый умный вариант, я бы выбрал первый Улыбаюсь
Записан

Never
Команда клуба

ua
Offline Offline
Пол: Женский

« Ответ #64 : 12-04-2004 19:11 » new

x77, класс- мне было полезно почитать.
Записан

не умеете летать- не мучайте метлу!
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #65 : 13-04-2004 07:20 » 

Never, Ага
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #66 : 08-06-2004 05:03 » 

Цитата

Бомба дня: Вычислена формула максимального размера таблицы в базе InterBase, Firebird и Yaffil.
Оказывается, четкого лимита в количестве записей нет. И уж тем более максимальное количество записей не равно 2 миллиардам, и не зависит от размера записи (даже среднего). Существует лимит на количество страниц, выделяемых для одной таблицы, и он приблизительно равен
(MaxInt / PageSize) * 17.476
после достижения этого лимита записи перестают вставляться в таблицу, и могут быть проблемы с backup/restore. По объему это примерно 36 гигабайт на 1 таблицу в базе данных. Утешает то, что таких таблиц в базе может быть сколько угодно (до 65535).


(C) www.ibase.ru
Записан

С уважением, Oldy.
АлексСАН
Гость
« Ответ #67 : 03-07-2004 07:57 » 

Всем привет!

В IBExpert'е после регистрации базы и попытке приконектится к ней выдается ошибка:
"Unsuccessful execution caused by an unavailable resource. unavailable
database".
В регистрационной записи:
Сервер = Локальный;
Srver Version = Firebird 1.5;
Путь к базе - правильный;
Пользователь = SYSDBA;
Пароль = masterkey;
Кодировка = WIN1251.
Может кто скажет, чего не так.
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #68 : 03-07-2004 10:09 » 

АлексСАН, попробуйте следующие настройки:
Сервер = Удаленный;
Имя сервера: Localhost;
Протокол: TCP/IP;
Server Version = Firebird 1.5
-//-
Client Library File = fbclient.dll;

Также проверьте файлы "Hosts" и "Services"
В Hosts должна быть строка:
127.0.0.1       localhost

В Services:
gds_db          3050/tcp                    #InterBase server
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #69 : 07-07-2004 02:08 » 

если действительно все пути правильные, то ощущение такое, что просто не запущен сервис... можно сделать netstat и поглядеть, открыть ли listen на порту 3050.
Записан

АлексСАН
Гость
« Ответ #70 : 07-07-2004 05:17 » 

Цитата

Сервер = Удаленный;
Имя сервера: Localhost;
Протокол: TCP/IP;

Это только и потребовалось сделать. IBExpert заработал как миленький. Спасибо ребятки за поддержку. Удачи вам всем.

Тем не менее, это как-то странно - Interbase - он и в Африке Interbase - на других машинах регистрация баз в IBExpert'е проходит как локальная без указания сервера "localhost", а здес вот подиж ты, не зажелали.

С уважением, САН
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #71 : 07-07-2004 05:42 » 

у меня с один 0.3 таких приколов не было. видимо, дело в пятёрке...
Записан

АлексСАН
Гость
« Ответ #72 : 07-07-2004 18:31 » 

У меня с единицей тоже никогда не было никаких проблем.
А c 1.5, вот тут пришлось столкнуться с тем что появилась ошибка
"Unable to complete network to host "localhost", при попытки соединится с FB Embedded (однопользовательское приложение, а embedded и появился только в 1.5). В embedded Yaffil такой ошибки не было.

Знающие люди подсказали.
FB Embedded будет коннектиться "к себе" только по локальному
протоколу, т.е. c:\dir\data.gdb.
Строка коннекта localhost:c:\dir\data.gdb будет считаться FB Embedded как коннект к удаленному серверу.
Все заработало.
Вот такие дела с 1.5 FB. Может кому пригодится.

С уважением, САН
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #73 : 08-07-2004 05:51 » 

Цитата
у меня с один 0.3 таких приколов не было. видимо, дело в пятёрке...

Дело скорее в IBExpert, так как следующее работает c FB 1.5 SS без проблем (и одно и другое):

isql.exe CONNECT D:\Database\MyDatabase.gdb -USER sysdba -PASSWORD masterkey
isql.exe CONNECT localhost:D:\Database\MyDatabase.gdb -USER sysdba -PASSWORD masterkey

Что-то попадалось мне в конференции разработчиков о каких-то багах при локальном коннекте, там же мелькала рекомендация подключаться к SS или CS (чтобы не иметь проблем) только через TCP/IP. Yaffil personal и FB 1.5 embedded - вещи однопользовательские, поэтому там работает только локальное подключение.
Записан

С уважением, Oldy.
Страниц: 1 2 [3]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines