Советы по Delphi

         

Я пытаюсь преобразовать мою базу


Delphi 1

Переход с Oracle на Interbase Я пытаюсь преобразовать мою базу данных на Oracle в базу данных local Interbase server. Все таблицы Oracle ссылаются на имя схемы. Interbase поддерживает такого типа имена схем?

Нет, Interbase не использует понятие классификатора таблицы (владельца), как это делают другие сервера, например, Oracle или Sybase. Наилучшее решение в этом случае - использование директив компиляции, позволяющее контролировать соглашение о стиле имен Oracle или Interbase, используемое в генерируемом .exe-файле.

Также, Delphi читает все атрибуты Oracle типа Number и конвертирует их в FloatField. Interbase при этом использует тип SmallIntField. Так, для преобразования необходимо пройтись по всем таблицам, удалить поля и затем снова их добавить. Можно это сделать как-то по-человечески?

Если я правильно понял то, что вы хотели сказать, то этот вопрос относится к специфике Interbase. Например, Interbase использует короткое поле (short field) с масштабированием вместо реального типа, если заданная при создании таблицы точность не превышает 10. [например, CREATE TABLE xxx (FLOATFIELD NUMERIC (5, 2)) обычно означает реальный тип с точностью 5 цифр с 2-мя цифрами после запятой. Но Interbase знает, что сможет поместить 5 цифр в короткое поле, поэтому она создаст короткое поле и запись и смасштабирует его с коэффициентом 2.] Проблема в следующем: BDE "спрашивает" Interbase о полях таблицы и их типах, Interbase честно рапортует, что поля имеют тип short, т.е. они "короткие". Но BDE ничего не знает о масштабировании.

Чтобы обойти этот неприятный момент, необходимо создать поле с точностью более 10, заставляя Interbase делать поля реального, а не короткого типа.

Могу ли я менять один тип SQL на другой, или это - несбыточная мечта?

Проблема в том, что каждый производитель создал свой диалект и реализацию SQL, который не обязательно был совместимым с SQL других производителей, особенно в рамках расширений "стандартного" SQL.

Существует ли возможность инкапсуляции общего кода для работы с базой данных от специфических реализаций конкретных версий баз, что позволило бы клиенту легко переходить от одного типа таблиц к другому?

Как я уже говорил выше: директивы компилятора.

Shawn Wu [000699]


Delphi 1

Автоматический logon к локальной InterBase Используйте компонент TDatabase. В строках Params пропишите:

USER NAME=sysdba PASSWORD=masterkey Затем установите свойство компонента TDataBase LoginPrompt в False.

После этого, с помощью свойства DataBaseName, вы должны создать прикладной псевдоним (Alias) и связать TQuery/TTable с вашим компонентом TDataBase. [000517]



Delphi 1

Автоинкрементальные поля и Interbase I Оказывается, что Interbase триггер " before insert" срабатывает только после того, как запись "запостится" из Delphi приложения. В связи с чем становится невозможным увеличение автоинкрементальных ключевых полей. Есть решение?

Большинство программистов решило эту проблему созданием хранимой процедуры (stored procedure), позволяющей от InterBase получить следующий номер и поместить его в вашу запись посредством метода onBeforePost или onNewRecord. [000559]



Delphi 1

Interbase BLOB-поля InterBase BLOB- поля отличаются от полей другого типа. Реально BLOB-поле имеет несколько подтипов (sub-type). Знание подтипа BLOB-поля существенно при создании приложения для работы с базами данных, которые включают в себя InterBase BLOB-поля. BLOB-поля могут быть трех подтипов: подтип 0, подтип 1 (два встроенных подтипа), и пользовательский подтип.

Подтип 0 BLOB-поля создается при выполнении команды CREATE, когда подтип не определен. Для ясности, в синтаксисе SQL все же рекомендуется явно указывать, что BLOB-поле относится к подтипу 0. Данный подтип BLOB-поля используется для хранения бинарных данных. InterBase не производит никакого анализа хранимых данных, он просто хранит данные в BLOB-поле байт-за-байтом. Наиболее частое применение BLOB-полей в приложениях Windows - хранение двоичных данных изображения, обычно отображаемое впоследствие компонентом TDBImage. Для этой цели подходит или BLOB-поле подтипа 0, или BLOB-поле пользовательского подтипа.

Второй встроенный подтип - 1. Данный подтип BLOB-поля разрабатывался для хранения текста. Обычно это данные свободного формата типа memo или заметок, отображаемых и редактируемых компонентом TDBMemo. Данный подтип BLOB-поля лучше подходит для хранения данных типа текст, чем поле, имеющее тип VARCHAR, поскольку, в отличие от поля типа VARCHAR, в режиме проектирования возможно задание ограничения по используемой областью памяти.

С помощью SQL-синтаксиса, подтип 1 BLOB-поля создается с указанием типа BLOB-поля, использованием ключевого слова SUB_TYPE и числа, указывающего на номер необходимого подтипа:

CREATE TABLE WITHBLOB ( ID CHAR(3) NOT NULL PRIMARY KEY, MEMO BLOB SUB_TYPE 1, AMOUNT NUMERIC ) Помимо двух встроенных подтипов BLOB-поля, существует также подтип, определяемый пользователем. Такой подтип задается отрицательным целым значением совместно с ключевым словом SUB_TYPE. Фактически учитывается только "отрицательность" целого числа, его значение может быть произвольным и остается на усмотрение того, кто создает таблицу. Указание числа -1 идентично указанию числа -2. Единственная рекомендация для использования подтипа, определяемого пользователем - гарантия того, что в каждой строке таблицы BLOB-поле будет иметь только данный подтип, определяемый пользователем. InterBase не имеет критерия для оценки хранимого подтипа, поэтому вся ответственность по определению подходящего типа двоичных данных ложится на приложение. Никакой ошибки со стороны InterBase при загрузке неверного типа двоичных данных в пользовательский подтип BLOB-поля быть не может, но приложение может столкнуться с трудностями, если оно ожидает один тип данных, но ей передают другой.

BLOB-поле пользовательского подтипа может создаваться следующим синтаксисом SQL: CREATE TABLE IMAGE_DATA ( FILENAME CHAR(12) NOT NULL PRIMARY KEY, BITMAP BLOB SUB_TYPE -1, EXEs BLOB SUB_TYPE -2, ) При пользовании таблицей, созданной с помощью приведенной выше команды, поле BITMAP может использоваться для хранения одного типа двоичных данных для всех записей. В нашем случае хранятся данные изображения. Поле EXEs подразумевает хранение выполнимых файлов, загружаемых с диска. Если приложение, использующее данную таблицу, по ошибке сохранит двоичные данные в поле BITMAP вместо EXEs, InterBase ошибки не выдаст, но приложение при этом столкнется с серьезными трудностями при отображении в компоненте TDBImage сохраненного выполнимого файла.

InterBase BLOB-поля и Delphi

При определении объектов TField для InterBase BLOB-полей в Delphi, следует относить различные подтипы BLOB-поля к производным типам TField следующим образом: Подтип 0: TBlobField Подтип 1: TMemoField Пользовательский: TBlobField Поскольку, как встроенный подтип 0, так и пользовательский подтип, относятся к объектам TBlobField, то забота об определении используемого подтипа во время проектирования приложения ложится на программиста. Единственный способ отличить подтип 0 от пользовательского подтипа заключается в просмотре информации о метаданных таблицы, что не может быть сделано с помощью Delphi. Для просмотра метаданных таблицы может быть использована утилита Local InterBase Server под названием WISQL.

InterBase BLOB-поля и Database Desktop

Утилита Database Desktop, поставляемая с Delphi (DBD), не создает пользовательские подтипы. При создании в Database Desktop BLOB-полей для хранения бинарных данных, включая данные изображения, используйте тип поля "BLOB". Этим вы создадите BLOB-поле встроенного подтипа 0.

В DBD также возможно создание BLOB-поля типа TEXT BLOB. Это эквивалент встроенного подтипа 1 и может использоваться для хранения текста свободного формата. Так как он только функционален встроенному подтипу 1 BLOB-поля, то при просмотре таблицы утилитой WISQL, обозначение его подтипа может отличаться от действительного.

[000639]



Delphi 1

Автоинкрементальные поля и Interbase II Я пытаюсь сгенерировать последовательный ключ для первичной ключевой колонки, но LIBS мне отвечает "nested select is not support in this context." (вложенный выбор не поддерживается в данном контексте.)

Как насчет: CREATE TRIGGER AUTOINCREMENT FOR MYTABLE BEFORE INSERT AS DECLARE VARIABLE new_key INTEGER; BEGIN UPDATE AUTOKEYS SET KEY_VALUE = KEY_VALUE + 1 WHERE (KEY_ID = "A"); SELECT KEY_VALUE FROM AUTOKEYS WHERE KEY_ID = "A" INTO :new_key; new.my_key_column = new_key; END ^ Steve Koterski (Borland) [000713]



Delphi 1

OLE Interbase Вот как прочесть из таблицы Interbase:

    procedure TForm1.ReadOLE; var BS:    TBlobStream; begin BS := TBlobStream.Create(Table1BLOBFIELD_BLOB, bmRead); OLEContainer1.LoadFromStream(BS); BS.Free; end;
и вот как записать это:

    procedure TForm1.WriteOLE; var BS:    TBlobStream; begin BS := TBlobStream.Create(Table1BLOBFIELD_BLOB, bmWrite); OLEContainer1.SaveToStream(BS); BS.Free; end;
- Rob Minte [000731]



Delphi 1

Автоинкрементальные поля и Interbase III Я пытаюсь добавить запись в таблицу InterBase, содержащую триггеры и blob-поля, тем не менее, всякий раз при выполнении метода "post" после установки ("append") значений, я получаю ошибку: 'Record/Key deleted.' (запись/ключ удален).

Вот реальный пример того, как я обошел эту проблему:

Определение хранимой процедуры: Create Procedure NewEmployeeKey Returns ( EmployeeKey Integer ) as begin EmployeeKey = Gen_Id( gnEmployeeKey, 1 ) ; end Определение триггера: Create Trigger SetEmployeeKey for tbEmployee Active Before Insert Position 0 as begin if ( New.EmployeeKey is Null ) then begin Execute Procedure NewEmployeeKey Returning_Values New.EmployeeKey ; end end Код Delphi для использования в обработчике события OnNewRecord, или AfterInsert, или BeforePost:

    { qyProviderData - это tQuery }
{ spProviderKey - это tStoredProc }

if qyProviderData.State in [dsInsert] then begin spProviderKey.ExecProc ; qyProviderData.FieldByName( 'ProviderKey' ).AsInteger := spProviderKey.ParamByName( 'ProviderKey' ).AsInteger ; end ; { if }
Это все, что вам необходимо. Хранимая процедура возвращает следующее сгенерированное значение. Триггер это гарантирует, даже если бы данные не были доступны из вашей Delphi-программы, первичный ключ все еще назначает значение. В Delphi-коде, я полагаю, вы могли бы проверять наличие пустого поля первичного ключа вместо .State in [dsInsert], хотя это то же работает.

- Mike Downey [000872]



Delphi 2

Автоматический запуск сервера Interbase Мой InterBase сервер загружается при запуске Win95. Но я не вижу иконки программы в группе автозапуска. Как мне его выключить?

В системных регистрах имеется один ключ: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Вы можете отключить автоматическую загрузку сервера, удаляя соответствующую переменную.

-Steve Schafer [000962]



FAQ по InterBase Ответы на наиболее часто задаваемые вопросы по InterBase (09/27/1996)

Если вы имеете дополнения, исправления или пожелания, шлите мне письма по адресу rlove@pobox.com.

Текущая версия данного FAQ'а доступна по адресу http://www.xmission.com/~uldata/ib/faq.txt.

Авторские права: 1996 Robert J. Love
Данный FAQ свободен для копирования, распространения и изменения формата.

Многие из этих вопросов и ответов взяты непосредственно из документов Borland. Авторские права таких ответов остаются у Borland.

Авторские права: Borland International, Inc.
-----------------------------------------------

Вопросы 1. Что мне необходимо для распространения InterBase/Delphi приложения, созданного для нашего InterBase сервера? 2. Что мне необходимо для распространения InterBase/Delphi приложения, созданного дла работы с Local InterBase? 3. Что юридически необходимо для распространения Local InterBase Server (LIBS)? 4. Я не могу подключить мои 32-битные приложения к моему серверу Novel... 5. Мое подключение к Интернет (Internet Connection) стартует всякий раз, когда я пробую соединиться с InterBase. 6. При попытке соединения я получаю следующее сообщение: Statement failed, SQLCODE = -902 (запрос потерпел неудачу) Unable to complete network request to host "DEV". (Невозможно завершить сетевой запрос для хоста "DEV".) -Failed to locate host machine. (невозможно найти хост-машину) -Undefined service gds_db/tcp. (сервис gds_db/tcp неопределен) 7. Мое соединение с InterBase, похоже, очень медленно... 8. Какие существуют Интернет-сервера, посвященные InterBase? 9. Существуют ли 16-битные драйвера ODBC, позволяющие подключаться к InterBase NT, Netware или любому из серверов UNIX? 10. Почему Delphi 1.00 поставляется с 16-битными драйверами ODBC для InterBase? 11. Существуют ли 32-битные драйвера ODBC, позволяющие подключаться к InterBase NT, Netware или любому из серверов UNIX? 12. Поддерживают ли 32-битные драйвера ODBC DSN? 13. Почему Borland решил взимать плату за Local 32-битную версию? 14. Как мне подписаться на список рассылки InterBase Mailing List? 15. Если в этом FAQ'е нет ответа на мой вопрос, куда мне обратиться? Вопросы и ответы по InterBase 4.2 16. Что такое InterBase 4.2? 17. Что нового в InterBase 4.2? 18. Для чего нужен Local InterBase? 19. Кто может быть пользователем InterBase Server под Windows 95? 20. Что включает в себя сервер InterBase под Windows 95? 21. Что включает в себя InterBase Server 4.2 for Windows NT? 22. Как осуществляется лицензирование InterBase? 23. Могу ли я свободно копировать ODBC драйвера InterBase? 24. Сколько стоит обновление до 4.2? Вопросы/Ответы
  1. Что мне необходимо для распространения InterBase/Delphi приложения, созданного для нашего InterBase сервера?


Вам необходимо следующее:
  1. BDE.
  2. SQL Links
  3. Клиентская лицензия


  • Что мне необходимо для распространения InterBase/Delphi приложения, созданного дла работы с Local InterBase?


  • Вам необходимо следующее:
    1. BDE
    2. SQL Links
    3. Local InterBase Server (смотри вопрос #3)


  • Что юридически необходимо для распространения Local InterBase Server (LIBS)?


  • Реально это зависит от версии, которую вы пытаетесь распространить. Delphi C/S 1.0 поставляется с неограниченной лицензией (Unlimited Distribution License), позволяющей распространять неограниченное число копий 16-битной версии LIBS. Тем не менее, для 32-битной версии лицензия Unlimited Distribution License недоступна. По 408-431-1000 вы сможете узнать текущие условия лицензирования.

  • Я не могу подключить мои 32-битные приложения к моему серверу Novel...


  • В настоящий момент соединение с помощью 32-битного SPX к InterBase невозможен, если вам необходимо подключить ваше 32-битное приложение к вашему серверу Novel, вы должны установить на нем поддержку протокола TCP/IP. (Это является следствием неготовности библиотеки 32 SPX Novel Libraries к моменту выхода SQL Links)

  • Мое подключение к Интернет (Internet Connection) стартует всякий раз, когда я пробую соединиться с InterBase.


  • Вам необходимо выключить флажок Auto Dial, который вы можете найти в Control Panel на страничке настройки Internet.

  • При попытке соединения я получаю следующее сообщение:
    Statement failed, SQLCODE = -902 (запрос потерпел неудачу)
    Unable to complete network request to host "DEV".
    (Невозможно завершить сетевой запрос для хоста "DEV".)
    -Failed to locate host machine. (невозможно найти хост-машину)
    -Undefined service gds_db/tcp. (сервис gds_db/tcp неопределен)


  • Следующая строчка должна присутствовать в services-файле как в вашем клиенте, так и на сервере:

    gds_db 3050/tcp Services-файлы могут располагаться в следующих каталогах:
    Windows95 -> C:\<WINDOWS95> (Где у вас установлен Win95)
    Windows NT -> C:\\System32\drivers\etc

  • Мое соединение с InterBase, похоже, очень медленно...


  • Это очень вероятно, если вы пользуетесь Netbeui, входящей в состав NT версии 4.0. Данная версия имеет ошибку, очень замедляющую работу Netbeui. Для решения проблемы попробуйте один из следующих рецептов:
    1. Обновите InterBase до самой последней версии.
    2. Установите, как вы обычно делаете, TCP/IP, это будет работать быстрее с любой версией InterBase.


    Примечание: Тестирование NT 4.0 и InterBase 4.2 с протоколами Netbeui и TCP/IP показало их равную производительность, а в некоторых случаях Netbeui был быстрее.

  • Какие существуют Интернет-сервера, посвященные InterBase?


  • На сегодняшний день я знаю 4 таких Интернет-сервера:

    InterBase Development
    http://www.xmission.com/~uldata/ib

    Mers Systems
    http://www.mers.com

    Dunstan Thomas InterBase Links
    http://www.demon.co.uk/dtuk/dtinterbaselinks.html

    Borland International
    http://www.borland.com/interbase

  • Существуют ли 16-битные драйвера ODBC, позволяющие подключаться к InterBase NT, Netware или любому из серверов UNIX?


  • Borland в настоящее время делает доступными 16-битные драйверы ODBC как часть продукта PC Client/Developer Toolkit [данное программное обеспечение также включается в пакеты InterBase для NT и сервера Netware]. Пользователи, приобредшие лицензии на PC Client/Developer Toolkit, имеют право устанавливать эти 16-битные драйвера. Цена за приобретаемый отдельно Client/Toolkit составляет $295, Borland использует для него товарный индекс ICL1140WWFN350.

  • Почему Delphi 1.00 поставляется с 16-битными драйверами ODBC для InterBase?


  • Delphi 1.00 содержал 16-битные драйвера ODBC для IB для того, чтобы все компоненты Delphi могли без проблем подключаться к серверу. Delphi 1.0 также включал SQL Link для InterBase, натив-драйвер с высокими скоростными характеристиками. Вопросы лицензирования не были явно или неявно отражены при пакетировании и в файлах deploy.txt драйвера ODBC, поэтому легальным пользователям продукта Delphi Client/Server не запрещается распространять продукты SQL Link и Local InterBase.

    В Delphi 1.02 драйверы InterBase ODBC были удалены, поскольку в необходимость в них компонентов Delphi отпала. Упоминание о драйверах остались в нескольких текстовых файлах, но это больше не требуется, так как в файлах deploy.txt содержится информация о правилах их распространения.

  • Существуют ли 32-битные драйвера ODBC, позволяющие подключаться к InterBase NT, Netware или любому из серверов UNIX?


  • Сегодня InterBase включает в себя 32-битные драйвера ODBC для Windows 95 и NT. Данные драйвера включены в InterBase 4.1 под NT и InterBase 4.2 под NT. Они были разработаны компанией Visigenic [смотри сообщение для прессы "Visigenic/Borland" на сервере www.borland.com]. Они также включены в Local InterBase под Win95/NT, который продается отдельно от Delphi. Драйвера также доступны как натив-драйвера для таких клонов UNIX, как Solaris, AIX и HP-UX. Никаких правил лицензирования не предусмотрено, а из существующих документов нельзя сделать выводы отностильно получения разработчикам доступа к драйверам путем покупки продуктов InterBase.

  • Поддерживают ли 32-битные драйвера ODBC DSN?


  • В настоящее время пока нет, в InterBase 4.2 возможность ODBC "DSN" была добавлена для поддержки соединений с серверными приложениями, такими, как сервера Web. Тем не менее, при использовании InterBase с серверами Web Server, для сервера необходимо иметь нужное число лицензий. Скоро Borland огласит свою политику отностительно лицензирования InterBase при работе с Интернет.

  • Почему Borland решил взимать плату за Local 32-битную версию?


  • (Смотри ниже подробное объяснение)

    Как вы, вероятно, уже знаете, Delphi C/S 1.0 включает в себя неограниченный в распространении Local InterBase [16-бит]. Мы [группа разработчиков InterBase] решили предложить эти беспрецендентные условия для распространения нашего продукта в среде разработчиков, демонстрации великолепия сервера и для увеличения полезности Delphi как средства разработки в среде Клиент/Сервер. Delphi Client/Server Suite 2.0 содержит Delphi Client/Server 1.0 и сохраняет условие свободного распространения Local InterBase [16-бит].

    Для 32-битных версий Delphi мы имеем:

    Delphi Desktop - не 32-битный InterBase любой сортировки [Desktop<>Client/Server]
    Delphi Developer - Local InterBase для Windows 95/NT включен, без распространения.
    Delphi C/S Suite 2.0 - Local IB для Win95/NT, IB Server NT на 2 пользователя, также без распространения.

    Почему без распространения?

    Во-первых, как вы можете увидеть из моих выкладок, новый продукт Local InterBase сертифицирован для использования в Windows 95 и Windows NT. Его архитектура полностью переписана с использованием нашего расширенного проекта SuperServer. Поскольку продукт разрабатывался как для Win95, так и для NT, Local InterBase настоятельно рекомендуется использовать в качестве отдельного сервера [MS не имеет сервера Win95; Oracle имеет один, но он имеет другой алгоритм программирования, чем NT server, они предлагают заплатить $400 за каждый 16- и 32-битный C API, и они посылают вас в InterSolv для ПОКУПКИ драйвера ODBC; Sybase имеет SQL Anywhere/Watcom и SQL Server 11 с другим API [ODBC против OpenClient], другой архитектурой и серьезными проблемами масштабируемости [продукт SQL Anywhere всегда использует Watcom с TransactSQL, но не использует OpenClient API, низкая многопользовательская производительность движка Watcom {для этого можно посмотреть последние обзоры в PC MAG за 10/94 и InfoWorld}, и так далее]; Informix не имеет ничего общего с работой на этих платформах; а Gupta свернула свою деятельность на этом поприще и кинулась разрабатывать High-End инструментарий для провайдеров, а не для серверов {если я правильно понял последнее сообщение для печати}]. 16-битные версии для отдельных пользователей отлично смотрелись в C/S пакете, в котором они распространялись. Ожидалось, что эти версии в пакете client/server должны быть свободными в распространении, но это не так.

    При продаже отдельно от Delphi и других клиентских продуктов Borland, продукт Local InterBase под Win95/NT будет сравниваться с SQL Anywhere, Personal Oracle и Personal Oracle Lite, и MS SQL Server Workstation.

    Мы включим наши C/C++ API для свободного использования.
    Мы включим наши 32-битные драйвера ODBC 2.5 под Win95/NT для свободного использования.
    Мы включим полную online-документацию, включая документацию по C API.
    Мы включим великолепную интеграцию в среду Win95/NT.
    Мы включим нативный 32-битный инструментарий.
    Мы предлагаем РАЗЛИЧНЫЕ наборы-пакеты для полного сервера [различающиеся только в поддерживаемых DDL, API, включаемой online-документацией и др.] с РАЗЛИЧНЫМ ценообразованием.

    Короче говоря, Local InterBase 32 предлагает бОльшие характеристики, лучшее взаимодействие с SQL [совместимость с уровнем ANSI 92, не '89], бОльшую универсальность [тот же комплект для Win95/NT], лучшую интеграцию с ОС, лучшую масштабируемость [мы работаем с 16 операционными системами, используя ОДНО И ТО ЖЕ API], лучшую производительность [поскольку вы пишите на одном API или посредством Delphi и никогда не переписываете свое приложение].

    Мы предлагаем такие характеристики/производительность/цены, что конкуренты просто рыдают навзрыд.

  • Как мне подписаться на список рассылки InterBase Mailing List?


  • Для подписки отправьте письмо по адресу listproc@esunix1.emporia.edu с командой "SUBSCRIBE INTERBASE Ваше Имя" в теле сообщения (без кавычек).

  • Если в этом FAQ'е нет ответа на мой вопрос, куда мне обратиться?


  • У вас имеется несколько доступных способов:
    1. Послать ваш вопрос в Compuserve GO BDEVTO (Секции 8 и 9)
    2. Послать ваш вопрос в список рассылки InterBase Mailing List (смотри Вопрос 14)
    3. Заключить контракт на поддержку (Support Contract) для InterBase и спросить службу технической поддержки (Technical Support)


    Вопросы и ответы по InterBase 4.2

  • Что такое InterBase 4.2?


  • InterBase 4.2 - новая версия сервера реляционной базы данных Borland InterBase под Windows 95 и NT.

  • Что нового в InterBase 4.2?


  • InterBase 4.2 - целое семейство новых продуктов, включающее в себя потокобезопасные клиентские библиотеки для Windows 95/NT, с расширенными 32-битными драйверами ODBC, расширенную версию Local InterBase, предназначенную для разработки отдельным пользователем и ее распространения, новый многопользовательский сервер под Windows 95 для небольших рабочих групп и новый сервер под Windows NT для разработки приложений уровня департамента и предприятия. InterBase 4.2 был создан с использованием расширенной версией архитектуры Borland SuperServer, что позволило поднять производительность продукта на небывалую высоту, сохранив при этом исторические преимущества InterBase и добавив легкость установки, удобство использования и разработки. Кроме того, InterBase 4.2 для Windows NT также содержит нового менеджера лицензий (License Manager), позволяющий системным администраторам легко и эффективно управлять пользователями баз данных.

  • Для чего нужен Local InterBase?


  • Local InterBase 4.2 разрабатывался для компаний и корпораций, поставляющих решения клиент/сервер для предприятий, которые имеют как автономных, так и сетевых пользователей. Local InterBase обеспечивает пользователей ноутбуков и рабочих групп автономным сервером баз данных, работающим на всех платформах Windows [Windows 3.1, 95 и NT], предлагая таким образом решение для сотрудников предприятий, имеющих нерегулярный доступ к сети. Поскольку Local InterBase использует тот же язык программирования и формат баз данных, что и семейство продуктов сервера InterBase [доступные для платформ Windows и UNIX], то приложения, созданные для использования с сервером InterBase, на 100% совместимы с Local InterBase, и не требуют внесений изменений для правильной работы.

  • Кто может быть пользователем InterBase Server под Windows 95?


  • Сервер InterBase под Windows 95 - многопользовательский сервер для рабочих и небольших групп. Совместимый с Windows 95, Windows NT Workstation и NT Server, InterBase Server под Windows 95 идеален для приложений, которые требуют не более 4 параллельных пользователей. Если потенциальное количество пользователей может быть 10 и более, InterBase Server под Windows 95 будет управлять соединениями для гарантии того, что будут активны не более 4 пользователей, это предохранит операционную систему Windows 95 от перегрузки с операциями, связанными с базами данных. InterBase Server под Windows 95 не требует для работы выделенной машины и может работать в сетевой среде типа "peer to peer", где сервер может обслуживать не только операции с базами данных.

  • Что включает в себя сервер InterBase под Windows 95?


  • Сервер InterBase под Windows 95 включает в себя клиентские библиотеки и драйвера ODBC, необходимые для распространения в пределах рабочей группы, которая планирует пользоваться сервером, а также сам сервер, устанавливаемый на одной из машин [обычно самая быстрая машина в группе]. Отдельные клиентские приложения, работающие с Local InterBase, легко адаптируются для работы с сервером InterBase под Windows 95, тем самым позволяя компаниям и крупным корпорациям легко масштабировать свои решения по мере увеличения к ним требований.

  • Что включает в себя InterBase Server 4.2 for Windows NT?


  • InterBase Server 4.2 под Windows NT включает в себя сервер InterBase, клиентские библиотеки InterBase [включая ODBC драйвера Win95/NT], менеджер лицензий License Manager, позволяющий системным администраторам легко и эффективно управлять пользователями баз данных, и высокопроизводительный 32-битный визуальный (GUI) инструментарий. Сервер InterBase под Windows NT фирмы Borland - наилучший выбор для сервера баз данных под Windows. Тестировавшийся и сертифицированный под NT 3.51 и 4.0, InterBase Server 4.2 легко справляется с задачами уровня крупного предприятия. Способный использовать многопроцессорные машины для максимальной производительности, InterBase Server 4.2 является наилучшим выбором для крупномасштабных приложений, требующих высокую скорость, легкость установки, удобство разработки и надежность эксплуатации.

  • Как осуществляется лицензирование InterBase?


  • InterBase предусматривает два типа лицензий: Named User (пользовательская) и Concurrent Server (серверная). Лицензия Named User рекомендуется для приложений, в которых количество пользователей, имеющих доступ к базе данных, является числом относительно постоянным, а вероятность добавления в сетевую среду серверов InterBase достаточно высока. Данная лицензия гарантирует, что любой пользователь NT Named Client будет иметь полный доступ ко всем серверам предприятия InterBase NT без необходимости приобретения лицензий для множества пользователей. Цена лицензии Concurrent Server позволяет разработчикам иметь определенное количество параллельно работающих пользователей, но при этом количество потенциальных пользователей может быть значительно большим. Если число потенциальных пользователей значительно превышает число паралельно работающих пользователей на текущий момент, лицензия Concurrent Server позволит вам в будущем сэкономить немало денег. Тем не менее, если к приложению прибавляются дополнительные сервера баз данных, вы должны иметь серверные лицензии в количестве паралелльно работающих пользователей, подключенных к этим серверам, даже если эти пользователи уже работают с другими серверами NT, имеющимися на предприятии. Таким образом, лицензия Named Client позволяет лицензировать и пользователей, и машины, и допускает подключение клиента к любому серверу предприятия NT, имеющему лицензию Named Client. Лицензия Concurrent Server лицензирует количество параллельно работающих на сервере пользователей и не предоставляет клиентам никаких клиентских лицензий.

  • Могу ли я свободно копировать ODBC драйвера InterBase?


  • Нет, но все пользователи InterBase 4.2, имеющие лицензию Named User, могут иметь копию клиентских библиотек InterBase и драйверов ODBC, установленных на их машине. Таким образом, если вы купили легальную лицензию для подключения к InterBase, вы имеете право на создание резервной копии. Аналогично этому, все пользователи InterBase 4.2 с лицензиями Concurrent Server также могут иметь копии клиентских библиотек и драйверов ODBC, установленных на их машине. Разработчики не могут копировать библиотеки 4.2 на машины незарегистрированных пользователей, или пользователей предыдущих версий InterBase [например, 4.0 и 4.1]. Пользователи этой группы должны обновить сервер до версии InterBase 4.2 или приобрести индивидуальные копии инструментария разработчика (Developer Toolkit) для каждого клиента, где имеются файлы этого инструментария [драйверы ODBC, GUI-утилиты и пр.].

  • Сколько стоит обновление до 4.2?


  • Клиенты InterBase 4.0 и 4.1 могут обновить InterBase до версии 4.2 за $499.95 [001065]



    Как гарантированно сделать backup/restore БД InterBase с опцией 'Replace existing database' и записями протоколов в файлы с гарантированным отстрелом пользователей? Nomadic советует: Att.bat: at 01:00 /INTERACTIVE "e:\IB_DATA\BR.BAT" BR.bat: del e:\IB_DATA\b.txt del e:\IB_DATA\r.txt del e:\ib_data\AR_IB.PRV del e:\IB_DATA\AR_IB.GBK d:\ib_42\bin\gfix -shut -force 1 e:\ib_data\AR_IB.GDB -user "SYSDBA" -password "oooo" net stop "InterBase Server" copy e:\ib_data\AR_IB.GDB e:\ib_data\AR_IB.PRV net start "InterBase Server" d:\ib_42\bin\gbak e:\ib_data\AR_IB.GDB e:\ib_data\AR_IB.GBK -user "SYSDBA" -password "oooo" -B -L -Y "e:\IB_DATA\b.txt" d:\ib_42\bin\gbak e:\ib_data\AR_IB.GBK e:\ib_data\AR_IB.GDB -user "SYSDBA" -password "oooo" -P 4096 -V -R -Y "e:\IB_DATA\r.txt" Sergey Klochkovski [001247]



    Как скомпилиpовать UDF для Interbase под Linux RH 4.0? Nomadic советует: Пример - #!/bin/sh gcc -c -O -fpic udflib.c ld -o libudf.so -shared udflib.o cp libudf.so /usr/interbase/lib/ ldconfig -v >>/dev/null [001249]



    Как узнать текущие дату и время в Interbase? Nomadic отвечает: Дата + время - DATE. Только дата - TODAY. Только время - DATE-TODAY. [001255]



    После снесения через родной uninstall Interbase Server 5.0 для Windows и желания поставить 5.1.1 вылетает ошибка: IBCheck. Что делать? Nomadic отвечает:

    Решение найдено. Прочитай сам и передай товарищу:

    Надо запустить regedit, и открыть ключ HKEY_LOCAL_MACHINE\Environment Там есть строка PATH. Так вот иногда она почему-то становится не строкой, а еще чем-то. Ее надо убить, и пересоздать как строку, прописав туда прежнее содержимое (в виде строки). [001257]



    При попытке регистрации UDF возникает ошибка (udf not defined). Что не так? Nomadic отвечает:

    1. Располагайте DLL в каталоге Interbase/Bin, или в одном из каталогов, в которых ОС обязательно будет произведен поиск этой библиотеки (для Windows это %SystemRoot% и %Path%);


  • При декларировании функции не следует указывать расширение модуля (в Windows по умолчанию DLL): declare external function f_SubStr cstring(254), integer, integer returns cstring(254) entry_point "Substr" module_name "UDF1" Где UDF1 - UDF1.DLL. [001326]




  • Как заставить Interbase принять COLLATE PXW_CYRL по умолчанию? Nomadic отвечает:

    (Это очень полезно при прямой работе с IB из различного CASE-инструментария, типа PowerDesigner или ErWIN)

    Чтобы не писать каждый раз COLLATE, я сделал следующее:
    1. Создал сохранённую процедуру create procedure fix_character_sets as begin update rdb$character_sets set rdb$default_collate_name = 'PXW_CYRL' where rdb$character_set_name = 'WIN1251' and rdb$default_collate_name = 'WIN1251' ; end
    2. Запустил ее один раз.


  • Создаю таблицы без указания COLLATE.


  • После восстановления из архива, запускаю еще раз. [001391]



  • Содержание раздела