Q: Есть ли в Сentura средства репликации баз?
A: Для построения репликаций в Сentura предусмотрены несколько возможностей. Различают SQLBase Exchange Server и SQLBase Exchange Desktop. SQLBase Exchange Server предназначен для реализации технологии распределеных БД, включая автоматическую организацию различных видов репликаций.
SQLBase Exchange Desktop в первую очередь ориентирован на один компьютер и обеспечивает конвертирование БД различных форматов, включая и преобразование даннных. SQLBase Exchange Desktop поддерживает также выполнение скриптов для выполнения сложных репликаций. Более подробную информацию вы найдете в документации exchange.pdf.
Q: Расскажите пожалуйста, чем можно обосновать использование средств Centura? В чем преимущества работы на Centura?
A: Некоторая информация, в которой есть характеристика CTD2000, содержится на сайте www.inteface.ru в статьях, посвященных продуктам Centura. Хотя, я думаю, Вы с ней знакомы. В дополнение, и особенно для руководства, можно сформулировать следуюшие опорные критерии обоснования:
1. Centura дает комплексное рещение (Есть родные средства разработки, СУБД, WEB поддержка, современные ОС, репликации, все уровни программирования - от C++ до Quick Object).
2. Есть поддержка, причем с 12-летней историей, всех мощных СУБД Oracle, SQLBase, Sybase, MS SQL Server и других.
3. Развитые и адаптированные под современные требования средства построения пользовательского интерфейса, причем программирование при минимуме ограничений намного проще, чем на C++ и Pascal (в 2-3 раза) (студенты осваивают CTD и делают на нем курсовую за 2-3 недели).
4. Фирма Centura сейчас довольно устойчиво закрепилась на рынке, у нее мощнейший заказ для ВМФ США.
5. В CTD 2000 много новых возможностей (AX, MS OLE DB, динамика объектов и
т.д.) и исправлены предыдущие ошибки. Можно привести еще много аргументов, но
и эти должны быть услышаны.
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. Отмечу, что новые версии не менее надежны и обладают многими хорошими дополнительными возможностями.
Q: Как в DataBaseExplorer можно выгрузить таблицу из одной базы в текстовый файл, чтобы потом загрузить в таблицу другой базы?
A: Если Вы работаете с SQLBase, то для этой операции можете использовать команды UNLOAD и LOAD, которые доступны в утилите SQLTalk (как автономной, так и встроенной в DataBaseExplorer). Причем, если таблицы совпадают по структуре и названию, то при UNLOAD могут быть сгенерированы команды создания таблиц. В противном случае нужно немного настроить скрипт для правильной загрузки в существующие таблицы (документация - sqltalk.pdf).
Кроме того, находясь в SQLTalk и сформировав данные в окне выхода с помощью любого запроса, вы можете сохранить результаты в текстовом формате, а далее с помощью запросов загрузить в любую БД.
Но на самом деле это очень удобно делать с помощью специального продукта Сentura, который называется Сentura SQLBase Exchange. Он позволяет делать репликации (см. ответ ниже) между любыми БД, в том числе и не SQL типа.
Различают SQLBase Exchange Server и SQLBase Exchange Desktop.
Кроме этого, можно в собственной программе реализовать любые сложные преобразования данных и их загрузку в БД.
Q: Когда производится удаление из таблицы, где присутствуют внешние ключи, скорость работы ужасна! Что можно сделать, для ускорения процесса?
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
файл сервера, в секции определения имени сервера. Измените имя. Убедитесь, что
нет других серверов в сети, использующих то же имя сервера.
A: Сообщение об ошибке 182 указывает, что SQLBASE не может создать резервный
файл. Убедитесь, что имеется достаточное дисковое пространство для копирования,
и каталог существует. Также убедитесь, что копия делается 'ON SERVER' и правильно
указан путь. На пример: Server1:sys\backups.
A: Это - временное событие. Ресурсы станут свободными через несколько минут.
A: Сервисом в Windows’95 – это обычные программы, запущенные в момент начальной
загрузки. Они выполнятся прежде, чем кто-либо зарегистрируется в системе. Чтобы
настроить сервис, запустите REGEDIT.EXE, и перейдите к разделу HKEY_LOCAL_MACHINE_SOFTWARE\Microsoft\Windows\CurrentVersion\Runservices.
Вставьте новое элемент и дайте ему уникальное имя, типа "SQLBASESERVER". Установите
значение этого элемента равным полному пути и имени файла сервера базы данных,
например "C:\centura\dbnt1sv.EXE". Чтобы выполнялся минимизированный запуск,
перед указанием пути необходимо вписать "start/m".
A: Прежде чем появился SQLBase для Win’95, существовали локальные 16-разрядные SQLBase сервера (DBWSERVR.EXE и DBWINDOW.EXE). Они были довольно просты в настройке и управлении. С появлением SQLBase для Win’95 (DBNT1SV. EXE) возникло несколько соображений, которые следует принять во внимание:
A: Имеется системная переменная SQLBASE, которая указывает на каталог, в котором
SQLBASE должен искать файлы SQL.INI, ERROR.SQL, MESSAGE.SQL, COUNTRY.SQL, и
MAIN.INI. Эта системная переменная была создана для решения проблем пользователей,
имеющих многочиленные копии одних и тех же файлов на компьютере.
Чтобы определить \GUPTA каталог, добавьте следующую строку в ваш AUTOEXEC.BAT:
SET SQLBASE = C:\GUPTA
Если Вы устанавливаете системную переменную SQLBASE, просмотр будет проводиться только в этом каталоге. В противном случае, порядок поиска для вышеупомянутых файлов следующий:
A: Centura Software Corporation сертифицирует 32-разрядные программы для использования
в Windows’98. Для получения дальнейшей информации посетите:
http://www.centurasoft.com/support/tech_info/bulletins/win98warn.html
A: Существуют ошибки в руководстве. Общий порядок загрузки должен быть:
load dsapi
load spxs
load dfd
load dll -------- это не учтено в начальном руководстве ----------
load tlispxds
load exfmgrnw
load dbnwsrvr
A: Иногда происходит то, что последний журнал был в использовании базой данных
в момент аварийного отказа файлового сервера. В этом случае сервер может удалить
журнал в момент перезапуска. Восстановление журнала возможно с помощью с FILER.EXE.
A: См. http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/fileli~1.html
Всякий раз, когда Вы получаете сообщение "Cannot load library ...", это указывает,
что Вы или не можете загрузить указанную DLL, или один из ее компонент. Убедитесь,
что всего компоненты существуют.
A: Рекомендуется сделать это, для обеспечения доступа к новым свойствам сервера
баз данных.
A: По умолчанию SQLBase использует 2155 порт, но использование ключевого слова LISTENPORT в SQL.INI в разделе протокола клиента, может изменять его. В зависимости от версии сервера настройки протокола должны быть подобны нижеуказанному:
[ <Servername>. < Tcp/ip протокол >]
Listenport = <portnumber>
Если Вы не используете значение portnumber по умолчанию, оно должно быть явно указано в ключевом параметре SERVERPATH в SQL.INI клиента в разделе клиент. Настройки должны выглядеть следующим образом:
[ Winclient.wsock | win32client. ws32]
Serverpath = <servername>. < Hostname | ip адрес >, <portnumber>
/ <servicename1> | {*, servicenamen >}
Имеется пример, использования 32-разрядного сервера и 32-разрядного пользователя:
[ Dbntsrvr. ws32]
Listenport = 2500
[ Win32client. ws32]
Serverpath = server1,127. 0. 0. 1,2500/island, video, payroll
A: Имеется документ, доступный по адресу:
http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/SQLBaseFileInfo.html
в котором присутствует список файлов, устанавливаемых с SQLBase DeskTop v7.
0.0, вместе с их описаниями.
Q: Где можно взять файлы, необходимые для поддержки русского языка в SQLBase (country.sql, country.dbs и т.п.)?
A: В официальных поставках SQLBASE нет этих файлов, однако по методике, изложенной в документации, их легко создать. Но (!!!) в принципе незачем! Использование этой национализации ничего практически не дает, хотя создает много проблем:
A: Вам необходимо создать локальную базу данных для SQLConsole, используя следующие шаги:
A: TLKNRTR может быть запущен, как программа, управляемая с помощью пакетных файлов DOS. Параметр INPUT=CommandFile передает в TLKNRTR набор команд, которые должны быть выполнены. В качестве примера можно воспользоваться следующим кодом:
@ECHO OFF
rem set variables
Set BkpDir = \\ machine\vol\backupdir
Set DB = MyDB
Set DBSRV = MyServer
Set Auth = sysadm/password
rem create the commandfile
echo set server % DBSRV %; > tmp.cmd
echo connect % DB % % 1 Auth %; >> tmp.cmd
echo backup database from % DB % to % BkpDir % on server; >> tmp.cmd
echo release log; >> tmp.cmd
echo backup log from % DB % to % BkpDir % on server; >> tmp.cmd
echo exit; >> tmp.cmd
rem execute the commandfile
tlknrtr noconnect bat input = tmp.cmd output = tmp.log
del tmp.cmd
A: Используйте следующие параметры:
SQLTALK BAT INPUT = <skriptfile.wts> OUTPUT < = Logfile >
A: Вопрос не простой. Параметров много. Сначала совет: ничего не трогайте,
пусть работают значения по умолчанию. Сильно влияет на производительность параметр
cache и sortcache, его желательно сделать большим (15-32767 страниц), но нужно
учитывать возможности компьютера. И т.д. Все параметры описаны в dba.pdf.
A: Для клиента в секции
[win32client.dll]
должно быть задано:
comdll=sqlws32
Нужно обеспечить, чтобы библиотека sqlws32.dll была доступна клиентским приложениям.
Для сервера нужно указать:
[dbnt5sv]
servername=Server1,sqlws32
dbname=ISLAND,sqlws32
чтобы для каждой используемой БД и библиотека sqlws32.dll была доступна серверу.
Кроме того в секции серверного SQL.INI
[dbnt5sv.dll]
должно быть задано
comdll=sqlws32
Кстати, для одного сервера можно задавать несколько протоколов и для одной базы
тоже несколько протоколов связи (например sqlwsspx). Более подробно это описано
в документации - dba.pdf. Лучше всего проверять подключение клиента с помощью
утилиты SQLTalk, которая работает прекрасно и по сравнению со старыми версиями
не содержит ошибок.
A: Во-первых, нужно уточнить условия, при которых возникает эта ситуация, и обстоятельства применения функции:
В-третьих, при использовании SQLBase CENTURA/GUPTA разных версий совместно с SQLWindows я такую ситуацию не встречал и не получал информацию от других программистов.
В-четвертых, проверьте согласование по синтаксису использования связующих (BIND) переменных в запросе. В разных серверах и их версиях разные возможности и механизмы, так что могут быть ограничения. К сожалению, не так детально, как бы хотелось, знаком с особенностями Microsoft SQL Server.
В-пятых, возможно, вы используете триггеры или процедуры на сервере, для Microsoft SQL Server это критично, если формирование выборки не завершено (стр. 1-21,22,4-6 электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matterhorn).
В-шестых, если вы используете ODBC, обратите внимание на настойки в
секции [odbcrtr] для Microsoft SQL Server, буферы и т.д.
Q: При использовании SQLWindows 5.0 с Microsoft SQL Server в первом окне таблица, заполняемая с помощью функции SalTblPopulate и TBL_FillNormal, т.е. все записи еще не прочитаны из базы и соединение остается открытым. Если в этот момент выполнить другой запрос (любой) с другим Sql Handle, то появляется ошибка 20055 (Connection is busy with results for another hstmt). Похоже, это связано со свойством DBPROP_MULTIPLECONNECTIONS MS SQL Server'а. Как решить эту проблему?
A: В документации (4-7, 4-19 электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matternhorn, я думаю и в более ранних версиях документов это тоже есть - книги по Connection с другими СУБД) по этому поводу сказано:
(начало цитаты)
Microsoft SQL Server 6.x provides backend support for scrollable cursors (result set cursors that scroll both backwards and forwards). Consequently, you cannot create front end result sets (FERS) if you turn on result set mode.
You must turn on result set mode to have more than one result set open at the same time. If result set mode is off, you must fetch all of the rows from one result set before you can SELECT another result set. If you try to SELECT a result set before fetching all the rows of a previously retrieved result set, you get the error:
[Microsoft][ODBC SQL Server Driver]Connection is busy with result for another hstmt
(Конец цитаты)
Таким образом, желательно для вашего случая включить режим выборки (You must
turn on result set mode). Как это делается, Вам необходимо уточнить в документации
по Microsoft SQL Server.
A: Quest ищет файл "QUEST.INI", который включает описания всех кнопок. Необходимо
повторно установить SQLWINDOWS/QUEST, чтобы получить правильные настройки. Либо
можно указать правильный путь "questdir" в файле WIN.INI в разделе [QUEST].
A: В новой версии QUEST нет, он существует только в 16-ти разрядном варианте. Вместо него предлагается использовать DataBase Explorer. Но если Вы работаете по сети, то можете, настроив правильно протоколы подключения, подсоединиться со старым QUEST 3.1 к новому серверу и он будет работать! Только зачем?
A: Object Compiler не был включен в поставку CTD 1.5, как сказано в сведениях к версии 1.5.1 "по причине нехватки времени". По этой причине в поставку не включены также Object Nationalizer и Lotus Notes QuickObject. Эти компоненты включены в поставку CTD 1.5.1
Q: CTD 1.1.2: При использовании экранных таблиц с динамическими (автоматическими) колонками, когда курсор уходит из отредактированной ячейки, таблица не получает сообщение SAM_Validate, как было в SQLWindows.
A: Это ошибка CTD 1.1.2. Она исправлена в PTF и в версии 1.5.
Q: Может ли SQLWindows может работать и через 32-хразрядный ODBC?
A: К сожалению прямой ссылки, на документацию о совместном использовании SQLWindows
(я понимаю как 16-ти разрядную версию) ODBC32 я пока не нашел. Но, судя, по
тому, как работают 16-ти разрядные приложения с 32-ти разрядными, например QUEST
и локальный SQLBase 7.1 или ERWIN 2.6 c ним же, то на этот вопрос можно ответить
отрицательно. Для SQLWindows нужен 16-ти разрядный ODBC. Кроме того, из логики
взаимодействия, конструирования и передачи параметров в приложениях, следует,
что без дополнительных "примочек" такое взаимодействие невозможно.
Q: В программе Sqltalk не работает должным образом режим поиска в скрипте текста по образцу. При первоначальном нажатии кнопки "Найти далее" выполняется поиск образца. При повторном нажатии кнопки "Найти далее" поиск не осуществляется.
Повторный поиск выполняется успешно, если закрыть окно "Поиск" и заново открыть.
Можно ли исправить ситуацию? У нас:
- Sqltalk 7.0.1
- sqltne.dll 7.0.1 -PTF4
- sqlwntm.dll 7.0.1 -PTF4
- tlkc32.dll 7.0.1
A: У Вас, по всей видимости, используется библиотека - (tlkc32.dll 7.0.1) из
версии CTD 1.5.1, в которой действительно проявляется перечисленная ситуация.
Размер и дата создания этой библиотеки - 384 512 б и 01.03.1999. В предыдущей
версии этой DLL, из CTD 1.5 этой ошибки нет (Размер и дата создания старой библиотеки
- 378 880 б и 03.06.1998.). Не проявляется эта ошибка и в последующих версиях
CTD, даже в BETA 1 Matternhorn. Рекомендуем Вам вернуться к прежней версии этой
библиотеки, пока не появиться новый PTF, в котором данная ошибка ликвидирована.
При необходимости мы можем переслать Вам рабочую версию библиотеки tlkc32.dll по e-mail или FTP.
Q: Несмотря на многие глюки, мы собираемся и дальше разрабатывать на CTD. Кстати, Вы не знаете, почему пакет заплаток на CTD 1.5.1 (именно! дословно:"Centura Team Developer 1.5.1 PTF1 SqlWindows32 PTF Download 4909") отказывается устанавливаться на свою (1.5.1) версию, сообщая, что не находит CTD 1.5._0_? Мы-то его скачали в слабой надежде что кое-какие ошибки среды вдруг да будут исправлены, но видно жить нам с ними дальше. Самое печальное, то что CTD 2, имея какие-то не особо необходимые новшества, наверно опять не устранит старые глюки. Например, на NT 4.0 sp4-5-6 (не на одной машине) CTD версий 1.0-1.5-1.5.1 одинаково валится через раз - на третий после запуска приложения в среде дизайнера, или при открытии новой копии дизайнера при вызове библиотеки из модуля.
A: Во-первых, к сожалению, сам не устанавливал заплатки, поэтому ответить на этот вопрос однозначно не могу, мы свяжемся со службой сопровождения CENTURA, и как только появится ответ его Вам перешлем.
Однако уже в этом положении можно попробовать что-то сделать. Хотя, возможно вы уже шли этим путем, осмелюсь предложить следующие варианты:
В-третьих, полностью разделяю Ваше мнение о том, что не будете отказываться от SQLWindows. Я рассматривал многое продукты для разработчиков информационных бизнес систем и нахожу в SQLWindows неоспоримые преимущества. Даже с научных позиций такого "пространственного" представления сложных программных образований, как OUTLINE, нет нигде, кроме того такого, профессионально (но не сложного для восприятия и запоминания) подобранного набора функций и возможностей, как в CENTURA/GUPTA, я не встречал в других даже очень мощных, а поэтому "сложных" средствах разработки приложений, не буду их перечислять.
В целом согласен, что превращение SQLWindows в супермощную систему (в том числе и для WEB) может ее сгубить. Будущее SQLWindows в вылизывании глюков, что достижимо в короткие сроки!
Q: Есть ли проблемы при миграции приложения с SWindows на CTD? Нужно ли корректировать код?
A: Проблем для перехода с SWindows на CTD нет. Все функции и операции поддерживаются. При этом выполняется процедура конвертирования в формат CTD. После конвертирования простым способом возврат в SWindows невозможен. Однако есть другие способы, так что приложение на CTD может быть конвертировано в SW, при условии, что не задействованы те возможности CTD, которых вообще нет в SW.
Q: Поддерживаются ли в CTD 2000 статдарты Internet: Java, Java Script, JDBC?
A: В состав CTD 2000 входит специальный драйвер для JDBC, так что JDBC поддерживается. Если говорить о Java и Java Script, то поскольку обеспечивается построение конечных HTML приложений, они могут содержать Java Script'ы и Java классы, но отладку их, естественно, необходимо производить в специализированных средствах, ориентированных на разработку Java приложений (BJ или VJ)
Q: Поддерживаются ли в CTD 2000 промышленные стандарты: TCP/IP, CORBA?
A: На основе протокола TCP/IP обеспечивается связь с удаленным сервером в сетях MS (NT, 95, 98, 2000). CORBA в явном виде не поддерживается, только через мосты COM и DCOM.
Q: Поддерживается ли в CTD 2000 стандарты Microsoft: ActiveX, OLE, DCOM, ODBC?
A: Стандарты ActiveX, OLE, DCOM, ODBC поддерживаются в CTD 2000. Кроме того, поддерживается OLE DB и COM объекты.
Q: Поддерживается ли в CTD 2000 элементы стандарта SQI-3, внедренные в настоящее время в Oracle, Informix, BD2?
A: SQLKBase базируется на SQL-92 и поддерживает этот стандарт полностью. Стандарт SQL-3 пока не является общепринятым. При работе CTD 2000 с соответствующими роутерами Oracle, Informix и BD2, если они соответвуют версиям СУБД, которые работают с SQLK-3, то все особенности должны поддерживаться, так как взаимодействие выполняется на SQL языке, команды которого к СУБД передаются в текстовом виде. Особенности могут быть только при визуальном проектировании запросов, что, на наш взгляд, не так существенно.
Q: Как загрузить БД при выдаче ошибки "Log disk space critically short"?
A:
1. Постарайтесь выгрузить вашу БД по частям и загрузить ее тоже по частям
в SQLBase 7. Можно по таблицам (там нужно вручную подправить в выгруженном файле
номер версии перед загрузкой)
2. Если БД выгружена полностью, то можно подредактировать скрипт, вставив
туда через определенные промежутки команду COMMIT. Это тоже иожет помочь в вашем
случае
3. Если есть возможность, попробуйте загрузку в SQLBase 7.5
4. Имейте в виду, что для LOG файлов нужно очень много места при таких
базах данных. Несколько скороспелое предположение: валиться сервер может и по
причине отсутствия в программах COMMIT, т.е. по такой же причине - недостатка
размера для LOG. Кроме того, проверьте физику харда. Вот дополнительный коплекс
мер по преодолению Вашей проблемы, включая возможно и ситуации, связанные с
падением сервера БД:
Client entry | Oracle | Informix | MS SQLServer | Sybase | IBM DB2 |
Empty string(“”) | NULL | Space | Space | Space(constant) NULL(bind var) |
Space |
NULL | NULL | NULL | NULL | NULL | NULL |
space | Space | Space | Space | Space | Space |
STRING_Null | NULL | NULL | NULL | NULL | NULL |
RULE | Rule-based optimization(index) |
CHOOSE | Cost-based optimization(index+amount of data+location of data) |
FIRST_ROW | Cost-based optimization for the first rows of the result set |
ALL_ROWS | Cost-based optimization for the entire result set |
The connect string can also contain a user name (UID) and password (PWD) for Quest or SQLWindows login dialog boxes. User name and password can be defined in three places: in ODBC. INI, in SQL. INI, and at runtime; each one of these locations takes precedence over its predecessor (that is, a UID and PWD in SQL. INI override any ODBC. INI entries). If no user name or password are specified in files, you are prompted at runtime for the security information. Values in the connect string may be separated by semi-colons (;).
For more information about ODBC. INI and the connect string, read your ODBC driver manuals.
Example This example specifies a database called DEMO. It connects to a data source called MYDB, which is defined in ODBC.INI with SYSADM/SYSADM as the user name and password.
Не вдаваясь в детальный перевод, можно сказать, что информация об удаленной БД ODBC дублировалась в нескольких местах: ODBC.INI и SQL.INI. Для последних версий SQLBase эта неопределенность была преодолена. В документации на SQLBase 7.1 - 7.5 уже, хотя и коротко сказано свежующее ( электронная книга Connecting Centura Objects to Databases - ссоn.pdf, раздел Connect search order стр. 1-8):
(начало цитаты)
A slight variation applies to SQLRouter/ODBC and SQLRouter/Microsoft SQL Server. Instead of searching the [odbcrtr] section of SQL.INI for a remotedbname statement, the application tries to find an ODBC data source name in the ODBC.INI file that matches the target database name. Otherwise, the processing is the same as for all the other SQLRouters.
(конец цитаты)
Все настройки для удаленных БД на базе ODBC в частности для SQLRouter/ODBC и SQLRouter/Microsoft SQL Server введены в файл настроек ODBC.INI (или в DDC.INI для последних версий CTD. DDC database connectivity configuration). Нужно посмотреть соответствующие разделы документации, связанные с настройкой драйверов ODBC на вашем компьютере. В версии 7.5 SQLBase этот раздел [ODBCrtr] может использоваться для определения параметра buffrow(и других) для контроля за буферизацией ODBC взаимодействия ( см. стр. 8-11, 4-8, 4-10 и др. электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matternhorn). Кроме того, старый раздел поддерживался для коммуникаций в OS/2 и роутеров ДОС dbxlocal, dbrouter и dbxcompbo.
Q: Проблема с работой CTD 1.5.1. под Oracle 8.1.5.
A: В Интернет на сайте www.centurasoft.com
есть такая информация. Хотя Ваша проблема, по-моему решена, т.к. новых звонков
от Вас не последовало, я все-таки решил Вам ее сообщить в первозданном виде.
Может быть, она будет полезна в дальнейшем.
Tech Alert
September 10, 1999CTD 1.1.2 or 1.5.x and Oracle 8.1.5 ( Oracle 8i )
Description:
CTD Applications fail to connect to Oracle 8i (also called Oracle 8.1.5)
Solution:
There are actually two solutions to the problem.
You can install the Oracle NET8 client software from Oracle 8.0.5 and it
will communicate correctly with Oracle 8i. You can also use the SQL*Net 2.3
client software from Oracle 7.
-OR-
Use the Oracle 8i (8.1.5) client software and manually add the following entry
into the Registry at location:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\
Add the following string value:
ORAOCI ORACLIENT8.DLL
and you will be able to successfully use the Oracle 8i (8.1.5) client software.
You will still
need to run the VIEW8.ORA and PLSVIEW8.ORA scripts, logged on as "SYS", in
order to use the Database Explorer with Oracle 8i.
Note: This information only applies to Centura 32-bit applications, not to
SQLWindows
16-bit applications, because the Oracle 8i client software is exclusively
32-bit.
Q: При переходе на новую версию (с CTD 1.5) возникла следующая проблема: в новой версии, в отличие от старой, нельзя запускать хранимые процедуры Oracle операторами SqlOraPLSQLPrepare и SqlOraPLSQLExecute. Что нужно делать?
A: Действительно - в первоначальной версии CTD2000 были недочеты при выполнении этих функций. Для ликвидации данной ошибки нужно с сайта centurasof.com скачать PTF1. После установки его эти ошибки проявляться не будут.
Q: На некоторых машинах, с абсолютно идентичными DLL, SQL.INI файлами и установкой ODBC, производится попытка установки связи. На некоторых машинах выдается ошибка, на других подключение безаварийно. Как можно устранить эту проблему?
A: Эта ошибка связана с проблемой определения путей загрузки DLL. Необходимо
исследовать, как загружаются необходимые модули на машинах с нормальной свяью
и сравнить со сбойными машинами. Некоторые драйверы устанавливает ODBC Администратор(ODBC32.
DLL). Это приводит к несоответствию версий ODBC Engine.
A: Если необходимо использовать "begin transaction" и "commit transaction" (или "rollback transaction") в сохраненных процедурах для MS SQL Server(ver 6.0, или 6.5) включите AUTOCOMMIT перед вызовом сохраненных процедур:
Call OdrPrepareProc(hSql, 'Call myproc ', ")
Call SqlSetParameter (hSql, DBP_AUTOCOMMIT, TRUE, ")
Call SqlExecute (hSql)
Call SqlSetParameter (hSql, DBP_AUTOCOMMIT, FALSE, ")
Если нет установки AUTOCOMMIT ON, Centura SQL/API неявно добавляет "begin
tran" прежде, чем вызывается любое DML утверждение и "commit tran" когда вызывается
SqlImmediate('COMMIT’).
Процедура сообщит об ошибке возврата транзакции:
Create procedure myproc
AS
If @@ TRANCOUNT < > 0
begin
return -1 - - error
end
...
begin tran
-- make some DML here
.....
If <ERROR>
rollback tran
else
commit tran
A: Использование ‘||’ не отрабатывается.
SQL Server использует знак '+' для конкатенации столбцов, как показано в следующем
примере:
SELECT colA + colB + colC FROM tableD INTO :sVar
Q: Нет доступа к JDBC-драйверам для работы. Что неправильно?
A:
Чтобы проверить подключение JDBC, используйте утилиту JDBCTest, доступную
на http://www.intersolv.com
Q: Можно ли подсоединяться к SQL Base через ODBC из Delphi, Crystal Reports, Centura Report Builder, Centura Database Explorer?
A: Каких-либо проблем при соединении из Delphi, Crystal Reports к SQL Base через ODBC не возникает, но ODBC нельзя использовать для подключения из родных продуктов Centura (Centura Report Builder, Centura Database Explorer). Необходимо использовать другие протоколы: APIPE, WINSOCKS, IPX/SPX, NETBeui. ODBC используется для соединений от продуктов третьих фирм, таких как MS-SQL Server, Sybase, Oracle, Excel, etc...
Невозможность подключения из родных продуктов поясняется ниже: You do SQLConnet()
(basic SQLAPI call)
- This opens SQL.INI and read thru it.
- comdll=sqlodb32 -> call ODBC admin -> call SQLBase ODBC driver
- SQLBase ODBC Driver calls the SQLAPI again and there you go...
A: Детальная информация по этой теме доступна по адресу:
http://www.centurasoft.com/support/tech_info/bulletins/access~1.html
A: При использовании приложений, которые создают SQL-запросы подобно "INSERT
INTO "INETLOG"("ClientHost", ..) ... " для вставки данных в SQLBase, существует
проблема в том, что кавычки в именах столбцов и таблиц не воспринимаются.
Обходным вариантом является следующий шаг. Необходимо создать таблицы и столбцы
с кавычками в именах.
Например:
CREATE TABLE "INETLOG"("ClientHost" char (255), ...)
В SQLBASE.
Либо переименуйте уже существующие таблицы.
A: Невозможно проверить все ODBC драйверы. Если драйвер совместим с ODBC
2.0, то он должен работать. Если имеются трудности с типами данных, обратитесь
к интерактивной справке для получения информации о DCC.INI.
A: Это может быть выполнено с помощью непосредственного подключения ODBC
API. Либо с помощью использования ODBCTESTX.OCX(свободно распространяемый
ActiveX компонент), который работает с ODBC API.
A: Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это,
как предполагается, делает соединение с источником данных быстрее. Этот файл
хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI
прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку,
при правильно сконфигурированом ODBC.
A: Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это,
как предполагается, делает соединение с источником данных быстрее. Этот файл
хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI
прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку,
при правильно сконфигурированом ODBC.
A: Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это,
как предполагается, делает соединение с источником данных быстрее. Этот файл
хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI
прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку,
при правильно сконфигурированом ODBC.
A: Для версии 6. 1. x утверждение, подобное 'SELECT NAME AS CUSTNAME FROM TABLE' всегда возвращает первоначальное имя столбца. Хуже, когда вычисляемые столбцы, агрегаты и т.д. в запросе не возвращают заголовки вообще. SQLBASE 7.0.1 имеет новый ODBC драйвер, версии 3.01.0006. Используя этот драйвер можно прекрасно выполнять запросы типа:
SELECT COMPANY_NAME AS NAME FROM COMPANY;
SELECT INVOICE_NO, SYM(ITEM_PRICE) AS X, AVG(ITEM_PRICE) AS Y FROM INVOICE_ITEM
GROUP BY 1;
SELECT @LEFT(COMPANY_NAME, 4) AS SPLITNAME FROM COMPANY;
Q: Quest при обращении к базе дает ошибку Invalid SET parameter. А WinTalk вообще не видит базу по ODBC.
А: Нужно проверить настройки драйверов ODBC Quest, совершенно точно эта программа (Quest) работает с ODBC наборами. Возможно, потребуется переустановить драйверы, а затем определить настройки соответствующих наборов данных. С WinTalk, как с промежуточным продуктом, были проблемы с доступом в БД и, в частности, ODBC наборами. Используйте SQLTalk с обновленными DLL и все возможности, даже LOAD и UNLOAD, будут доступны. Из SQLWindows доступ к ODBC наборам также работает нормально (при правильной настройке драйверов).
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Interface Ltd.Отправить E-Mail http://www.interface.ru |
|
По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 07.02.01 |