faqs.org.ru

 Главная > Программирование > Работа с базами данных >

FAQ по Centura SQLBase

Секция 1 из 3 - Предыдущая - Следующая
Все секции - 1 - 2 - 3

FAQ по Centura SQLBase


Общие вопросы

Q: Где можно найти дополнительную информацию о продуктах компании Centura?

A: На сайтах http://www.centurasoft.com и http://www.interface.ru



Q: Где я могу найти информацию о серверах баз данных компании Centura и проблеме 2000 года?

A: Все новые версии SQLBase соответствуют 2000 году. Более подробную информацию можно найти на http://www.centurasoft.com/support/tech_info/b ulletins/cli2000.htm. Ваши прикладные программы, которые обращаются к SQLBase, также следует проверить. Используйте утилиту, доступную на ftp.centurasoft.com/products/utilities/y2ksqlb.zip чтобы проанализировать ваши SQLBase базы данных. Пожалуйста, прочитайте ReadMe.txt и License.txt после извлечения их из .ZIP файла. Раздел "Поведение функции YEAR()" так же может быть интересным



Q: В каких программных продуктах фирмы Centura решена проблема 2000 года?

A: Проблема 2000 полностью решена для следующих версий самых популярных программных продуктов:

Всем пользователями более ранних версий продуктов Centura рекомендуется сделать upgrade на любую из последних версиий. В настоящий момент возможна поставка:

Q: Перед нами стоит задача написать систему производственной себестоимости (СПС). На данный момент мы пытаемся выбрать подходящее программное обеспечение для этой задачи.

A: Короткий ответ:

Ответ на поставленный вопрос зависит от целого ряда факторов и условий, уточнение которых поможет выбрать подходящее программное обеспечение для поставленной задачи. По грубой оценке задачи можно предложить проверенные на практике многих разработчиков средства: для разработчиков Centura Team Developer (1.2 - 2.0) - SQLWindows/SQLWindows32, а для хранения данных SQLBase 6.1/7.5.

Возможный распространенный ответ:

Ответ на поставленный вопрос зависит от целого ряда факторов и условий, из которых можно выделить следующие главные:

  1. Ориентировочные объемы БД (Мб - Гб)
  2. Количество пользователей в системе (возможно и однопользовательский вариант)
  3. Предполагаемая стоимость работ
  4. Квалификация разработчиков и программистов, доступных для проекта
  5. Требования к быстродействию, надежности и стоимости при эксплуатации системы.
  6. Другие факторы, существенные для конкретной реализации.
Если хотя бы ориентировочно определены перечисленные факторы, то выбор состоит все-таки из ограниченного числа вариантов:
  1. Большие, затратные системы с большим числом рабочих мест, иерархической структурой, разработчики высокой квалификации, большие затраты на эксплуатационное ПО, трудоемкой эксплуатацией, числом рабочих мест >20, длительным этапом проектирования, разработки и внедрения - СУБД - ORACLE и его родные средства разработки программного обеспечения (либо SYBASE, либо INFORMIX).
  2. Системы средней размерности, число рабочих мест от 3-15, разработчики квалификации средней или чуть выше, сносными требованиями проектированию, затратам на ПО и стоимости эксплуатации, легкость в сопровождении - СУБД SQLBase и средства разработки SQLWindows/ SQLWindows32 (Centura Team Developer CTD 1.5 - 2.0) фирмы CENTURA/Gupta ( либо MS VB + MS SQLServer). Кроме того, для данного случая может быть хорошим с точки зрения быстродействия и стоимости вариант использования RDM/ROM(средства разработки RAIMA DATA MANAGER и разработки RAIMA OBLECT MANAGER), С++ (например Inprise) и Velocis(СУБД) при числе рабочих мест до 5-ти.
  3. Для малых систем, однопользовательских систем и систем с числом РМ до 5-ти, эффективным будет применение С++ (Borland C++Builder предпочтителен по надежности ПО), правда для квалифицированных программистов, и API для работы с БД (DBD - BDE и др.), а также средств RDM/ROM (или средств этого же уровня) + СУБД Velocis, при требованиях к программистам чуть ниже целесообразно использование продуктов CENTURA (SQLWindows/ SQLWindows32 Centura Team Developer CTD 1.5 - 2.0), которые имеют и однопользовательский вариант и развитые возможности выхода на С/С++. Возможным вариантом является применение VB и настольных СУБД (MS Access) для программистов более низкой квалификции.
  4. Самым дешевым и простым способом является использование систем электронных таблиц типа MS EXCEL, однако, никакой гибкости, ненадежность и сложности в обучении пользователей гарантированы.

Q: Нас очень заинтересовала бы система разработки приложений (скажем, клиентов баз данных) с возможностью получать СТАНДАРТНЫЙ C++ код. Borland C++ Builder не очень устраивает: те функции, которые он включает в текст программы, не всегда (и все реже) поддерживаются другими разработчиками. Microsoft C++ тоже основывается на своих библиотеках, и хотя это надежнее, все же Microsoft меняет их как перчатки... Нет ли в природе чего-нибудь более универсального? Просветите, пожалуйста.

A: Вообще в вашем вопросе содержится много неопределенного (какие функции Вас не устраивают, какие системы классов и почему Вас не удовлетворяют и т.д.), однако, попробую все-таки ответить.

Если брать мировую практику разработки программ на С и С++, то действительно: оценки систем программирования Borland C++ и Microsoft C++ не очень высокие: они с трудом попадают в первый десяток систем разработки на С++. Однако так сложилась тенденция распространения продуктов в нашей стране, именно они из-за своей доступности (бесплатности) получили у нас широкое распространение. Так системы Watcom, Zortech C++, Visual Age C++, всегда у профессиональных программистов ценились выше. Данные системы программирования не часто появляются на "доступных" CD и торговых фирмах. Кроме того, в Интернет есть большое количество складов библиотек для С и С++.

Если Вы имеете ввиду средства проектирования программ, в частности то, что называется CASE-технологиями, то в настоящее время это направление бурно развивается и здесь можно рассматривать продукты многих фирм-лидеров: Rational, Platinum (+ Logic Works), SilverRun, Embarcadero, из отечественных CaseAnalitic (SoftArt) и т.д. Информацию о продуктах этих фирм можно найти на одноименных сайтах. Однако с генерацией кода в них на практике не так хорошо, поэтому их применение эффективно в первую очередь, все же, на этапах проектирования и сопровождения.

Вообще, если речь идет о создании приложений и сложных программных систем клиентов баз данных, то мне, несмотря на то, что я сам являюсь приверженцем языка С и С++, придется сказать, что использование этого языка для данных целей не является лучшим выбором. Это, к сожалению, факт. API (например, API для SQLBase), которое предлагается для многих СУБД не просто в освоении, и, тем более, трудоемкость разработки приложений велика. Хотя этот вариант нельзя отбрасывать для разработки профессиональных систем.

Наиболее предпочтительным может быть комбинированный вариант: основой приложения являются специальные средства разработки уровня 4GL (например, SQLWindows компании Centura, Centura Team Developer, Developer фирмы Oracle и др.), а для более ответственных участков используется С или С++, функции которых вызываются из приложений при обращении к DLL. Язык SAL, используемый в SQLWindows очень приближен к С и С++, однако в нем нет той сложности, которые испытывают разработчики при изучении системы классов, в частности Borland C++ и Microsoft C++, есть все основы для объектно-ориентированного проектирования и проектирования, коллективной разработки, создания собственных шаблонов и библиотек, достаточное количество стандартных и подключаемых объектов (COM и ActivX). Можно много говорить о достоинствах этого варианта, хотя конечно существуют и недостатки. Многие разработчики для создания программных систем клиентов баз данных все же предпочитают эти доступные на нашем рынке и не дорогие, даже по сравнению с Borland C++ и Microsoft C++, средства разработки.

Теперь по вопросу универсальности. Не думаю, что универсальная система программирования Вас больше устроит, так как с универсальностью очевидно теряется простота и прозрачность для создания систем. Здесь, по-видимому, нужен здравый компромисс.

Извините за некоторые общие рассуждения, возможно Вам знакомые, но более конкретный ответ на Ваш вопрос возможен только при уточнении исходных посылок: какой класс задач-приложений Вы хотите создавать, какими ресурсами располагаете, каков уровень ваших программистов (средний или высокий, для низкого я бы порекомендовал VB), почему Вас не устраивают все-таки функции и классы Borland C++ и Microsoft C++ и т.д.
 


Q: Не подскажете, какими средствами можно решить следующую задачу: Имеется официально купленный SQLBase 6.0 for Netware 25 Users. Установлен на NetWare Server 4.1.

Сейчас стоит задача перевода всей сети на платформу Windows NT.

В связи с этим возникает вопрос: Как осуществить перенос SQLBase Server 6.0, работающего в данный момент под NetWare, на Windows NT Server?

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

A: Начну с конца. Если у Вас в комплекте SQLBase 6.0 нет дистрибуции для SQLBase под Windows NT Server, то Вам необходимо приобрести этот продукт. В настоящее время лучшая версия SQLBase 7.5.1. Она, кроме того, обеспечивает три уровня защиты данных и доступа. Цены на версии (в зависимости от числа пользователей) есть на сайте www.interface.ru. Если дистрибуция есть, то приобретать ничего не надо. Кроме того, если у Вас старый SQLWindows, желательно поменять его на CTD 1.5.1 (до 15 апреля есть льготный вариант приобретения мощнейшей версии CTD 2000 - она выйдет летом - бесплатно, купившим CTD 1.5.1).

После установки на NT SQLBase требуются минимальные штатные настройки сервера и клиента, детально описанные в документации. В принципе возникает две задачи: подключение к серверу и перенос данных из старых баз SQLBase на новые.

Первая задача решается настройками в SQL.INI на сервере и клиенте (протоколы связи должны быть одинаковыми TCP/IP). На клиенте нужно поменять настройки COMDLL в секции [winclient] или [win32client] на sqlwsock и sqlws32 соответвенно (отмечу попутно, что если у серверов разные имена, то могут одновременно работать несколько серверов на разных платформах). На сервере в доступном только ему (!) SQL.INI, нужно произвести настройки данного вашего сервера, указав COMDLL, требуемого типа в секции [dbnt25sv]

servername=server1,<ваша COMDLL для связи>,

для NT это может быть также sqlws32 для протокола TCP/IP:

servername=server1, sqlws32.

Вторая задача связана с переносом данных на новый сервер. Возможно, Вы это знаете, но я все-таки отмечу детали. На старом сервере нужно выполнить с SQLTalk команду UNLOAD для вашей БД (connect и set server обязательны). Затем создать БД с таким же именем на новом сервере и выполнить с SQLTalk команду LOAD с указанием того же файла. Детали: файл с информацией должен быть доступен серверу (расположен на сетевых томах); при новой версии сервера в этом файле возможно потребуется вручную поменять номер версии выгруженной БД (это в начале файла выгрузки).

Я думаю, что Вы по достоинству оценили надежность SQLBase и SQLWindows. Отмечу, что новые версии не менее надежны и обладают многими хорошими дополнительными возможностями.


Управление данными

Q: Когда производится удаление из таблицы, где присутствуют внешние ключи, скорость работы ужасна! Что можно сделать, для ускорения процесса?

A: Решение заключается в том, что внешние ключи должны быть установлены после того, как будет создан индекс на ссылочную колонку в каждой дочерней таблице. Для каждой таблицы с внешним ключом:

1) Удалить внешний ключ.
2) Создать индекс на колонку, используемую ключем.
3) Воссоздать внешний ключ.


Q: При попытке произвести вставку данных в таблицу появляется сообщение 'table in an incomplete state'. В чем причина и что теперь делать?

A: Похоже на то, что индекс, который был установлен при создании первичного ключа, был удален. Удалите первичный ключ, создайте индекс, и заново создайте первичный ключ. Это должно решить проблему.



Q: Возможно, ли модифицировать таблицу с данными с использованием утверждения select?

A: Для SQLBase версии 6. x.x можно производить модификацию с использованием SUBSELECT. В SQLBase версии 7.0 впервые представлена функция, выполняющая подобные действия. Имеется превосходный пример для SQLWindows, показывающий данную методику, доступный на сайте http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/t1tot2.zip



Q: Программа выводит сообщение об ошибке "Application Dedlock", что необходимо сделать?

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

Например:

Оба приложения блокируются. SQLBASE выбирает один из процессов и завершает вторую задачу.

Методика уменьшения подобных проблем следующая.

В программах необходимо откорректировать порядок insert/update/delete для устранения ситуаций одновременной блокировки.


Сообщения об ошибках

Q: Что означает сообщение об ошибке №63731?

A: Такой номер сообщения об ошибке недопустим. Однако существует правило для определения реального номера ошибки. Для ошибок, чей номер выше 60000, необходимо использовать формулу пересчета “(65536 - [Номер ошибки]) * (-1)”. В данном случае получаем (65536 - 63731) * (-1) = -1805 “TimeOut”.



Q: Работа сервера базы данных завершается с ошибкой 703. Что это означает?

A: Ошибка 703 - это вероятно аппаратная проблема. Выполните "Check Database", и посмотрите результат. Сервер базы данных не завершит своей работы, когда будет обнаружена ошибка. Если "Check Database" обнаруживает ошибку в индекес, удалите, а затем воссоздайте индекс. Если "Check Database" находит ошибку в странице, Вы должны найти разрушенные строки. Создайте новую таблицу с такой же структурой, как у разрушенной таблицы, затем вставьте все, не разрушенные строки в новую таблицу, удалите старую разрушенную таблицу, и переименуйте недавно созданную таблицу по имени удаленной таблицы. Этот способ позволит сохранить не разрушенные данные. После того, как устранены все неполадки и создана резервная копия, необходимо произвести UNLOAD/DROP DATABASE/CREATE DATABASE/LOAD или REORGANZE. Эта операция полностью восстановит вашу базу данных. См. также:
http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/sbsrecov.html



Q: Выдается отрицательный номер ошибки. Каково отличие от положительных кодов возврата?

A: Отрицательная ошибка означает, что сервер базы данных произвел RollBack. В SQLBase RollBack может быть ограничен последней компилированной командой или всей транзакцией. Положительная ошибка означает, что транзакция все еще активна (то есть программа может выбрать, выполнять COMMIT либо RollBack).



Q: Почему выдается сообщение об ошибке №00422 “Invalid Servername Length”?

A: Многие клиенты не работают с более новыми серверами, и возникновение ошибки №00422 не возможно. Эта проблема возникает, когда пользователь Centura Tem Developer переходит от SQLBase 6.x на SqlBase 7.x. Необходимо заменить SQLWNTM.DLL и COMDLLS на более новые версии.


Q: После установки PTF10 для CTD 1.1.2 в программах стала возникать ошибка: cbi11.exe Ошибка приложения. Инструкция по адресу "0х0000434f" обратилась к памяти по адресу "0x0000434f". Память не может быть "read". Как можно устранить ошибку?

A: Короткий ответ:

Для ответа на Ваш явно вопрос недостаточно информации. Опишите место, оператор, действие, при котором возникает эта ошибка. Опишите среду (ОС, ЭВМ и др.) на которой возникает ошибка. Во время выполнения или при работе в режиме интерпретатора 'cbi11.exe? Попробуйте сделать .EXE, и запустить с DEPLOY.

Возможный распространенный ответ:

Для ответа на Ваш явно вопрос недостаточно информации. Опишите место, оператор, действие, при котором возникает эта ошибка. Опишите среду (ОС, ЭВМ и др.) на которой возникает ошибка. Во время выполнения или при работе в режиме интерпретатора 'cbi11.exe? Попробуйте сделать .EXE, и запустить с DEPLOY.

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

Аксиома 1: 99.99% ошибок все-таки на совести программиста и разработчика. Если в это не верить, то программирование нужно бросать.

Аксиома 2: Выход из создавшегося положения есть, и чаще всего не один!

Ну а если всерьез, то попробуйте следующие действия, возможно, они выведут Вас из кризисной ситуации:

  1. Квалифицируйте ссылки на все дочерние объекты переменные, особенно, если их имена совпадают с названиями в других окнах (например: form1.df1).
  2. Не используйте сомнительные объекты (например - QO) функции и DLL, особенно внешнего и собственного происхождения. Если не использовать нельзя, основательно их протестируйте.
  3. Проверьте собственные классы, если они есть, попробуйте упростить и использовать стандартные объекты для эксперимента.
  4. Проверьте работоспособность системы на стандартных примерах, входящих в комплект CDT, и если на них не пойдет, то сообщите дополнительно, указав название примера.
  5. Восстановите начальную версию и проверьте на ней Ваши программы. Если программы пойдут, то делайте выводы сами.
  6. Попробуйте Ваши программы на более старших версиях, например на CTD 1.5.1 (тестовую версию можно скачать на сайте www.interface.ru). Если программы пойдут, опять же делай те выводы, если не пойдут ищите ошибку в своей программе.
  7. Используйте известные Вам методы локализации ошибок, например с помощью корректного комментирования. Локализуете ошибку вплоть до оператора или объекта. Замените или измените его.
  8. Если ошибка проявляется аналогично в разных программах, то попытайтесь найти общее между этими программами. Если на некоторых программах, например стандартных, SAMPLах не возникает, то сравните их.

Сохраненные Процедуры

Q: Необходимо использовать константу DATETIME_NULL в сохраненных процедурах, но она не работает. Что происходит?

A: Имеется ошибка использования этой константы в SQLBase версии 6.X. В SQLBase 7.0.1. это было исправлено.


Платформы

Q: Появляется сообщение об ошибке 'duplicate server ' при попытке установить SQLBase на Novell.

A: NLM определил, что имеется другой сервер с таким же именем, которое определено в SQL.INI файле сервера. ERROR.SQL файл определяет " Remedy:Verify that the server being installed does not already exit on the network". Проверьте SQL.INI файл сервера, в секции определения имени сервера. Измените имя. Убедитесь, что нет других серверов в сети, использующих то же имя сервера.

Секция 1 из 3 - Предыдущая - Следующая

Вернуться в раздел "Работа с базами данных" - Обсудить эту статью на Форуме
Главная - Поиск по сайту - О проекте - Форум - Обратная связь

© faqs.org.ru