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

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

Автор: cryptonium
Дата сообщения: 11.10.2006 13:55
pug
здесь не раз поднимался этот вопрос - пока не нашли
http://forum.ru-board.com/topic.cgi?forum=93&topic=0480&start=0

есть возможность попросить ее и отснять - но книжка толстая - а учитывая не очень удобный для этого сканер - вряд ли потяну...
Автор: travells
Дата сообщения: 07.11.2006 17:33
Такой вопрос:

D7-FireBird-FibPlus.
Выполняется запрос Select в DataSet, и юзера работают с ним ...

Как сделать так чтоб изменения отображались у второго юзера? Сразу оговорюсь, что юзер2 сидит от юзера1 на растоянии нескольких километров и канал связи слабенький, так что постоянно рефрешить неполучится, может есть какая-то фича что отслеживает изменения в базе и подтягивает только их?

А поскольку практического опыта в написании клиент-серверных приложений нет - то и ниче в голову не лезет ...

Автор: OXDBA
Дата сообщения: 07.11.2006 17:40
travells
Как вариант
Обновление клиентских наборов данных в InterBase

Автор: OXDBA
Дата сообщения: 08.11.2006 09:28
travells
P.S. Что касается отслеживания изменений - только руками на триггерах, для примера можно посмотреть как это сделано в IBExpert'е. Cовместить это дело с IbDataSet... в одной из наших реализаций пришлось делать клиенте select в буферный MemoryDataSet, а затем, по необходимости, выбор только изменений из лога наката и модификация этого самого MemoryDataSet'а
Автор: travells
Дата сообщения: 08.11.2006 10:13
OXDBA

Спасибо за ответ. Теперь буду точно знать, что так просто это ни сделать и придется ковыряться самому.
Автор: 4fatal
Дата сообщения: 13.04.2007 16:18
Не знаю в ту ли ветку пишу, но попробую здесь. Проблема следующего рода: есть некая программа написаная ( насколько я понимаю на Microsoft(r) Visual FoxPro), которая хранит данные в нескольких файлах с расширением .gdb. Для ее установки (по справке) необходимо установить Firebird-1.5.0.4201_RC8-Win32 и Interbase client v.5. Раньше один человек за этой программой сидел и горя я не знал, но руководство решило что необходимо еще одному человеку в данную базу набивать данные. По той же справке написано следующее (дословно):
4. Для ручного внесения изменений (Панель управления > Источники данных ODBC > Системный DSN > добавить > INTERSOLV InterBase ODBC Driver (*gdb) > прописываем название базы (Data Source Name), и путь к базе (Database Name)). Для подключения к серверу NT( //сетевое.имя.комп./c:\base\имя базы). Для 9x (сет.имя.комп:c:\base\имя базы).
И вот здесь то и начались мои мучения. Ну не работает ни в какую. Пишет либо невозможно подключить файл защиты либо ошибка подключения. Так как мои познания в SQL и всяких таких делах находятся на уровне того, что я знаю что есть такой зверь SQL ( обитающий где-то в африке ), то соответсвенно я застрял... Подскажите поможет мне Interbase server или нет, а может это вообще не реально? На всякий случай сеть у меня на W 2003 enterprise R2 с контроллером домена, базы я пытался ставить и на клиентские машины (которые на W XP pro SP2) и на сам сервер, со всеми разрешениями к доступу у файлам, со всевозможными вариантами (как расшариванием папки, подключением сетевого диска и пр.) и вообще в каком направлении копать? А может кто подскажет пошаговую инструкцию? Заранее огромное СПАСИБО!
Автор: RedPromo
Дата сообщения: 13.04.2007 17:42
4fatal
Наверно самая хорошая пошаговая иструкция на ibase.ru
Во первых нужно определится если БД находится на удаленной машине то запущен ли там сервер Firebird.
Расшариванием и подключением сетевого диска можеш даже не пытася заниматся не поможет. Вот как раз для случая если у тебя база находится на удалленой машине и есть
Цитата:
Для подключения к серверу NT( //сетевое.имя.комп./c:\base\имя базы). Для 9x (сет.имя.комп:c:\base\имя базы).

Если на локальной то хватит и просто пути к БД.
Можно попробовать подконектица с помощу тогоже IBExpert с удаленной машины если все нормально то тогда нужно в другую сторону искать.
Автор: vserd
Дата сообщения: 16.04.2007 09:30
4fatal
попробуй переписать путь на исходном компе так: сетевое.имя.комп:c:\base\имя базы.
Если программа работает, тогда прописывай на других компах аналогично.
В случае использования синтаксиса \\комп\путь вступают в силу ограничения прав нетбиос. Как там правильно их выставлять я не помню, всего лиш раз недолго с бубном танцевал. А по TCP работает без проблем.
Автор: 4fatal
Дата сообщения: 16.04.2007 10:28
Спасибо, уже разобрался, во всяком случае узнал я про все эти заморочки больше чем знал раньше. А загвоздка была в кривой софтине, это она гнала, причем нагло... В очередной раз убедился: все программы от казенных ведомств - кривые. Спасибо всем.
Автор: d00b
Дата сообщения: 21.05.2007 14:47
Господа, простите за дурацкий вопрос, но каким образом мне получить exclusive rights на бд? IBPump ругается на лупы в таблицах и отказывается работать(
Автор: OXDBA
Дата сообщения: 22.05.2007 09:35

Цитата:
Господа, простите за дурацкий вопрос, но каким образом мне получить exclusive rights на бд?

Встречный вопрос, а что ты понимаешь под exclusive rights? Прав владельца недостаточно? Есть еще sysdba на крайний случай...

Цитата:
IBPump ругается на лупы в таблицах

"Мне мешают твои лупы в таблицах", вот прямо так и ругается?
Автор: d00b
Дата сообщения: 22.05.2007 14:46

Цитата:
Встречный вопрос, а что ты понимаешь под exclusive rights? Прав владельца недостаточно? Есть еще sysdba на крайний случай...


Если бы я знал что понимает под этим IBPump(
Вот из хелпа:


Цитата:
Option 'Switch Off all Ref. Constraints which have a loop.' require exclusive access to database.


В мануале к firebird есть ссылка на главу 14 "Getting exclusive rights to the database" книги "Using Firebird". Только книги нету.
В IBPump указан пользователь SYSDBA:



А вот что происходит при нажатии кнопки Get defintions:



Окно с предупреждением растягивается на 3-4 экрана в длину.

Добавлено:
ля
Идиот. Я имел в виду exclusive access, жарко, голова не варит.

ЗЫ - база в шотдауне, к ней точно никто не подключён.
Автор: OXDBA
Дата сообщения: 22.05.2007 15:15
Ну, другой разговор
Смысл в следующем, существует некая таблица(ы), имющая(ие) FK на саму себя, и IBPump просит временно их удалить, дабы не заморачиваться с порядком добавления записей.
P.S Удалить FK естественно, а не таблицы

Добавлено:
Кстати, если
Цитата:
Окно с предупреждением растягивается на 3-4 экрана в длину.

за счет перечисления наименований таблиц, то возможна ситуация когда TABLE_1 имеет FK on TABLE_N, TABLE_2 на TABLE_1, TABLE_3 на TABLE_2 .... но сама мысль о такой ситуевине меня пугает.
Автор: OXDBA
Дата сообщения: 22.06.2007 15:38
http://forum.ru-board.com/topic.cgi?forum=33&topic=8542#lt

Цитата:
В активе две проблемы:
1. Установить гранты на объекты

А в чем собственно, проблема? Насколько я помню роли они и в embedded роли.

Цитата:
2. Выбор компоннтной базы для работы в Delphi
подскажите с компонентной базой, читал предыдущие посты по Firebird'у, пишут что FIB+ рулят, так ли это на теперешний момент??

Еще как
Автор: keon
Дата сообщения: 22.06.2007 16:41
наскока я понял embed-вариант идет как dll и +FDB'шка. А в ней не нашел таблицы USERS, так где будут хранится пользователи???

Получается что сам SYSDBA, PUBLIC и созданные юзверя должны бытьв шиты в FDB'шку.

Мне нужно чтобы в БД присутствовали тока мной созданные пользователи, и имели строго определенные гранты на объекты. Чтобы им не были доступна ни одна системная таблица, чтоб не навредить.
Автор: keon
Дата сообщения: 23.06.2007 16:19
И еще вопрос насчет безопасности.

Получается что БД созданная под "одним" SYSDBA, может спокойно просматриватся на другом сервере.
Хотелось бы чтобы БД которая шла вместе с приложением, была доступна тока для него, т.е. если я определил что есть юзверь из под которого можно тока смотреть данные, и еще из под которого можно манипулировать с БД, то не зная их пароли нильзя было иметь доступ к этой БД. А так получается любой может просто взять этот файлец (FDB), развернуть у себя сервер Firebird и тупо позырить всю инфу, и править что хочется.

Похоже не удачно выбрал вариант с использованием Firebird...
Автор: RedPromo
Дата сообщения: 23.06.2007 22:31
keon
Этот вопрос неоднократно подымался всеми, дествительно Firebird отданно предпочтению в сторону производительности сервера, аналог с шифрованием это Yaffil можеш использовать его.
Насчет стырить, как обычно при желании стырить можно все, это тебе решать. Но как всегда есть несколько стандарных рекомендаций которые позволять уменьшить риск воровтсва базы и информации в ней.
Автор: SerhyKlim
Дата сообщения: 24.06.2007 01:40

Цитата:
Получается что БД созданная под "одним" SYSDBA, может спокойно просматриватся на другом сервере.


Заведи роль SYSDBA, тогда юзер SYSDBA не получит доступа к базе.
Но в общем целом товарищ выше прав - FB считает, что шифрование - не СУБД-шное дело. Можно шифровать данные на клиенте.
Автор: Tantos
Дата сообщения: 25.06.2007 06:13
keon, так база обычно хранится на сервере. Пользователи могут скопировать базу, если только у тебя расшарена папка с базой, что является грубейшей ошибкой!
Автор: keon
Дата сообщения: 25.06.2007 09:30
Просто предпологалось держать БД вместе с приложением, т.с. как "цивилизованное" структуированное хранилище данных. И через созданных для нее юзверов рулить привелегиями к определеным ее объектам (таблицы, вьюхи и т.д.).
Автор: OXDBA
Дата сообщения: 25.06.2007 09:37

Цитата:
Мне нужно чтобы в БД присутствовали тока мной созданные пользователи, и имели строго определенные гранты на объекты.

README_embedded.txt принципиально не читаем?

Цитата:
Похоже не удачно выбрал вариант с использованием Firebird...

Решать только тебе!
Tantos
Ты прав, но здесь речь идет об embedded.
Автор: keon
Дата сообщения: 25.06.2007 10:21

Цитата:
Заведи роль SYSDBA, тогда юзер SYSDBA не получит доступа к базе.


Роль SYSDBA создать не получится, т.к. есть такой юзерь.

Добавлено:

Цитата:
README_embedded.txt принципиально не читаем?


2.3. Authentication and security

The security database (namely security2.fdb) is not used
in the embedded server and hence is not required. Any
user is able to attach to any database. Since both
the server and the client run in the same address space,
the security becomes just an agreement between both
sides which can be easily compromised.

But note that SQL privileges are still checked.

Типа любой юзверь могет присоединить мою БД к совему пространству сервера баз данных, куда "перетекут" и мои юзверя. И от пользователя SYSDBA сможет делать с моей БД все что угодно. А значит с Firebird как независимое (и защищенное) хранилище данных в варианте embed не проходит требуемой критики.

Буду пробовать с "дятлом", мож удастся достич требуемого результата.
Автор: OXDBA
Дата сообщения: 25.06.2007 11:07

Цитата:
Буду пробовать с "дятлом", мож удастся достич требуемого результата.

Ну если очень чешется, поставь альфу FB2.1, в триггере ON CONNECT проверяй на приход сисдба мастеркеевича и говори ему 'прощай'


Добавлено:

Цитата:
А значит с Firebird как независимое (и защищенное) хранилище данных в варианте embed не проходит требуемой критики.

Защищенное...исходники СУБД есть, файл БД наколько я понимаю тоже доступен... чего еще нужно начинающему злодею
Автор: keon
Дата сообщения: 25.06.2007 14:41

Цитата:
в триггере ON CONNECT проверяй на приход сисдба мастеркеевича и говори ему 'прощай'


а это вариант), ну если тока "другой "SYSDBA не перекроет это))
Автор: Boris777
Дата сообщения: 22.07.2007 13:22
Помогите, пожалуйста.
Падает сервер БД
Использую FireBird 1.5 ОС XP Prof
В лог кидает ошибку 1061 Не может выполнить команду. Виснет.
По сети к БД обращаются 5 клиентов.
После переустановки сервера работает нормально.
Заранее благодарен за помощь.
Автор: Tantos
Дата сообщения: 23.07.2007 01:50
Boris777, используй логгер SQL-запросов (например, BTSQLMonitor), и посмотри, что за команда.
Автор: vserd
Дата сообщения: 23.07.2007 10:13
Boris777

Цитата:
1061
похоже на ошибку TCP/IP смотри что у тебя с сетью.
И как прописываешь строку для доступа?
Автор: OXDBA
Дата сообщения: 23.07.2007 15:39

Цитата:
В лог кидает ошибку 1061 Не может выполнить команду. Виснет.

Код ошибки 1061 или 10061? А еще лучше кусок лога покажи.
Автор: Boris777
Дата сообщения: 24.07.2007 06:40
Спасибо за помощь. По поводу сети, то все нормально. Тестил по несколько раз.
Строка подключения <IP сервера БД>:<Полный путь к файлу БД>.
В Loge строка:
ABRAMOV_BOR (Client)    Fri Jul 20 14:52:10 2007
    Control services error 1061
И зависание сервера происходит переодически.
Автор: vserd
Дата сообщения: 24.07.2007 09:54
Boris777

Цитата:
После переустановки сервера работает нормально.

После старт/стопа сервера или после переинсталяции???

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

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


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