Главная > Программирование > Работа с базами данных > |
FAQ по Centura SQLBase |
Секция 1 из 3 - Предыдущая - Следующая
Все секции
- 1
- 2
- 3
A: На сайтах http://www.centurasoft.com и http://www.interface.ru
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()" так
же может быть интересным
A: Проблема 2000 полностью решена для следующих версий самых популярных программных продуктов:
Q: Перед нами стоит задача написать систему производственной себестоимости (СПС). На данный момент мы пытаемся выбрать подходящее программное обеспечение для этой задачи.
A: Короткий ответ:
Ответ на поставленный вопрос зависит от целого ряда факторов и условий, уточнение которых поможет выбрать подходящее программное обеспечение для поставленной задачи. По грубой оценке задачи можно предложить проверенные на практике многих разработчиков средства: для разработчиков Centura Team Developer (1.2 - 2.0) - SQLWindows/SQLWindows32, а для хранения данных SQLBase 6.1/7.5.
Возможный распространенный ответ:
Ответ на поставленный вопрос зависит от целого ряда факторов и условий, из которых можно выделить следующие главные:
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. Отмечу, что новые версии не менее надежны и обладают многими хорошими дополнительными возможностями.
A: Решение заключается в том, что внешние ключи должны быть установлены после того, как будет создан индекс на ссылочную колонку в каждой дочерней таблице. Для каждой таблицы с внешним ключом:
A: Похоже на то, что индекс, который был установлен при создании первичного ключа,
был удален. Удалите первичный ключ, создайте индекс, и заново создайте первичный ключ.
Это должно решить проблему.
A: Для SQLBase версии 6. x.x можно производить модификацию с использованием SUBSELECT.
В SQLBase версии 7.0 впервые представлена функция, выполняющая подобные действия. Имеется
превосходный пример для SQLWindows, показывающий данную методику, доступный на сайте
http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/t1tot2.zip
A: Эта ошибка происходит, когда несколько программ пытаются установить блокировки на одной и той же странице в базе данных, при этом уже имеется блокировка на странице от других приложений. Блокировки устанавливаются, когда происходит обращение к данным, и зависят от уровня изоляции.
Например:
Методика уменьшения подобных проблем следующая.
В программах необходимо откорректировать порядок insert/update/delete для устранения
ситуаций одновременной блокировки.
A: Такой номер сообщения об ошибке недопустим. Однако существует правило для определения
реального номера ошибки. Для ошибок, чей номер выше 60000, необходимо использовать
формулу пересчета “(65536 - [Номер ошибки]) * (-1)”. В данном случае получаем (65536
- 63731) * (-1) = -1805 “TimeOut”.
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
A: Отрицательная ошибка означает, что сервер базы данных произвел RollBack. В SQLBase
RollBack может быть ограничен последней компилированной командой или всей транзакцией.
Положительная ошибка означает, что транзакция все еще активна (то есть программа может
выбрать, выполнять COMMIT либо RollBack).
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: Выход из создавшегося положения есть, и чаще всего не один!
Ну а если всерьез, то попробуйте следующие действия, возможно, они выведут Вас из кризисной ситуации:
A: Имеется ошибка использования этой константы в SQLBase версии 6.X. В SQLBase 7.0.1.
это было исправлено.
A: NLM определил, что имеется другой сервер с таким же именем, которое определено
в SQL.INI файле сервера. ERROR.SQL файл определяет " Remedy:Verify that the server
being installed does not already exit on the network". Проверьте SQL.INI файл сервера,
в секции определения имени сервера. Измените имя. Убедитесь, что нет других серверов
в сети, использующих то же имя сервера.
Секция 1 из 3 - Предыдущая - Следующая
Вернуться в раздел "Работа с базами данных" - Обсудить эту статью на Форуме |
Главная - Поиск по сайту - О проекте - Форум - Обратная связь |