faqs.org.ru

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

FAQ по Centura SQLBase

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

Q: Появляется ошибка 182 при попытке сделать копию на Novell сервере. Что это означает?

A: Сообщение об ошибке 182 указывает, что SQLBASE не может создать резервный файл. Убедитесь, что имеется достаточное дисковое пространство для копирования, и каталог существует. Также убедитесь, что копия делается 'ON SERVER' и правильно указан путь. На пример: Server1:sys\backups.



Q: При закрытии SQLBASE на Novell, выдается сообщение "1.1.14 Module did not release 1152 resources". В чем заключается проблема?

A: Это - временное событие. Ресурсы станут свободными через несколько минут.



Q: Как установить SQLBase в виде сервиса Windows’95 до версии 7?

A: Сервисом в Windows’95 – это обычные программы, запущенные в момент начальной загрузки. Они выполнятся прежде, чем кто-либо зарегистрируется в системе. Чтобы настроить сервис, запустите REGEDIT.EXE, и перейдите к разделу HKEY_LOCAL_MACHINE_SOFTWARE\Microsoft\Windows\CurrentVersion\Runservices. Вставьте новое элемент и дайте ему уникальное имя, типа "SQLBASESERVER". Установите значение этого элемента равным полному пути и имени файла сервера базы данных, например "C:\centura\dbnt1sv.EXE". Чтобы выполнялся минимизированный запуск, перед указанием пути необходимо вписать "start/m".



Q: Имеется ли возможность связаться с локальным SQLBase сервером из 16- и 32-разрядных приложений?

A: Прежде чем появился SQLBase для Win’95, существовали локальные 16-разрядные SQLBase сервера (DBWSERVR.EXE и DBWINDOW.EXE). Они были довольно просты в настройке и управлении. С появлением SQLBase для Win’95 (DBNT1SV. EXE) возникло несколько соображений, которые следует принять во внимание:

Конфигурирование протокола TCP/IP для Win’95 на машине, которая не имеет сетевых адаптеров, может быть сложным и не совсем удачным делом. Шаги, перечисленные ниже разработаны для оказания помощи при установке и конфигурировании TCP/IP для Win’95 так, чтобы к SQLBase серверу для Win’95 можно было обращаться и 16- и 32-разрядным приложениям.
Если Вы уже установили TCP/IP на вашей машине с Windows’95 и он работает правильно, проделайте несколько шагов для конфигурации SQLBase. Эти шаги подразумеваюьт, что Вы знакомы с SQLEDIT: Если у Вас не установлен TCP/IP протокол, проделуйте следующие шаги, чтобы сконфигурировать TCP/IP для Win’95:

Q: Для чего используется системная переменная SQLBASE?

A: Имеется системная переменная SQLBASE, которая указывает на каталог, в котором SQLBASE должен искать файлы SQL.INI, ERROR.SQL, MESSAGE.SQL, COUNTRY.SQL, и MAIN.INI. Эта системная переменная была создана для решения проблем пользователей, имеющих многочиленные копии одних и тех же файлов на компьютере.
Чтобы определить \GUPTA каталог, добавьте следующую строку в ваш AUTOEXEC.BAT:

SET SQLBASE = C:\GUPTA

Если Вы устанавливаете системную переменную SQLBASE, просмотр будет проводиться только в этом каталоге. В противном случае, порядок поиска для вышеупомянутых файлов следующий:

  1. Текущий каталог
  2. \SQLBASE (текущего диска)
  3. Корневая директория (текущего диска)
  4. Каталоги, определенные системной переменной PATH
  5. Каталоги определенные системной переменной DPATH (только для OS/2 2.0).
Вы можете устанавливать системную переменную SQLBASE, и на клиенте и на сервере.


Q: Имеются ли проблемы, при работе с Windows’98?

A: Centura Software Corporation сертифицирует 32-разрядные программы для использования в Windows’98. Для получения дальнейшей информации посетите:
http://www.centurasoft.com/support/tech_info/bulletins/win98warn.html



Q: Почему не загружается SQLBase 7.X в Novell NetWare 4.11 (NDS), хотя в Начальном Руководстве все описано?

A: Существуют ошибки в руководстве. Общий порядок загрузки должен быть:

load dsapi
load spxs
load dfd
load dll -------- это не учтено в начальном руководстве ----------
load tlispxds
load exfmgrnw
load dbnwsrvr

  1. Согласно интерактивной документации p.12-9 пакет включает snapin файл для nwadmin <CNWA16. DLL>. Этот файл отсутствует. В данный момент Вы не можете управлять SQLBase в NWADMIN.
  2. Интерактивная документация p. 12-2 не содержит полной конфигурации. Конфигурация (кроме вышеупомянутой ошибки) правильна в Начальном Руководстве.
Дополнительная информация может быть найдена по следующему адресу:
http://www.centurasoft.com/support/tech_info/bulletins/ndsdocpr.html


Q: После аварийного отказа сети, SQLBase сервер выводит сообщение "missing logfiles". Что необходимо делать?

A: Иногда происходит то, что последний журнал был в использовании базой данных в момент аварийного отказа файлового сервера. В этом случае сервер может удалить журнал в момент перезапуска. Восстановление журнала возможно с помощью с FILER.EXE.



Q: Клиенты Win’95 выдают ошибку "Cannot load sqlspxw.dll" хотя конфигурация – такая-же как для Win3.1 клиентов. Имеются установленные клиенты Novell. Как можно устранить ошибку?

A: См. http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/fileli~1.html
Всякий раз, когда Вы получаете сообщение "Cannot load library ...", это указывает, что Вы или не можете загрузить указанную DLL, или один из ее компонент. Убедитесь, что всего компоненты существуют.



Q: Требуется ли обновление клиентских компонент, если обновлена версия сервера баз данных (5.x - 6.x)?

A: Рекомендуется сделать это, для обеспечения доступа к новым свойствам сервера баз данных.



Q: Какой номер порта TCP/IP используется для SQLBase?

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



Q: Какие файлы копируются при установке локальной версии SQLBase 7.X?

A: Имеется документ, доступный по адресу:
http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/SQLBaseFileInfo.html
в котором присутствует список файлов, устанавливаемых с SQLBase DeskTop v7. 0.0, вместе с их описаниями.


Инструментальные средства

SQLConsole

Q: При установке SQLConsole 6.0 не удается создать локальную базу данных! Почему?

A: Вам необходимо создать локальную базу данных для SQLConsole, используя следующие шаги:

  1. Запуститься в режиме TOOLS ONLY.
  2. В меню 'Options’ будут видны две опции, 'Create SQLConsole database' и 'Enable automatic features’. Опция 'create' работает нестабильно. Выберите опцию 'enable'. При этом зпустится локальный сервер и будет произведена попытка соединения с локальной базой данных. Будет выдана ошибка, предупреждающая о том, что не возможно соединиться с базой данных и предложением создавать локальную базу данных. Выберите ‘Да’.

SQLTalk

Q: Возможно ли иметь "динамические сценарии" для утилиты TLKNRTR (старая версия DOS SQLTALK)?

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



Q: Как можно запустить SqlTalk, чтобы выполнить сценарий автоматически?

A: Используйте следующие параметры:
SQLTALK BAT INPUT = <skriptfile.wts> OUTPUT < = Logfile >


SQL Windows

Q: При использовании SQLWindows 5.0 с Microsoft SQL Server у меня возник вопрос. Используем SalTblPopulate для заполнения таблицы. Если количество записей слишком большое, то появляются проблемы. Высвечивается 100 записей (по умолчанию), остальные остаются пустыми. Если я ставлю 32753 (максимально допустимое количество загружаемых строк), то программа вешается намертво. Вероятно, я неправильно работаю с таблицей. Как это делать правильно?

A: Во-первых, нужно уточнить условия, при которых возникает эта ситуация, и обстоятельства применения функции:

  1. Используется ODBC или механизмы связи через SQL роутер для Microsoft SQL Server и какие версии данных продуктов.
  2. Каковы размеры оперативной памяти на Вашей ЭВМ (таблица храниться в ОП) и возможно свободное пространство локального HDD.
  3. Размер отдельной записи при выборке (FETCH) в таблицу.
Во-вторых, при реальной практике применения (просмотра) таблиц фактически невозможно использовать такую большую выборку (Максимум 300 - 400 записей), так как пользователь практически не в состоянии выполнять навигацию по таким выборкам и реально это не нужно, только ему это на до корректно и доходчиво объяснить, учитывая его психологию. Мы обычно выдаем порцию записей в таблицу (300 - 1000), на экран выводим общий размер выборки ( функция - SqlGetResultSetCount) и даем пользователю предупреждение о не полностью заполненной таблице. В окне выборки представлены ее критерии, так что пользователь быстро привыкает их задавать (например, первые буквы фамилии) для уменьшения объема выборки. Кроме того, повышается оперативность его работы: он не ждет долго заполнения таблицы (как в QUEST, кстати, попробуйте им обратится к Вашей таблице: может быть это все-таки Ваша ошибка)

В-третьих, при использовании 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.


Quest

Q: При попытке запустить Quest не видно никаких кнопок, кроме "New" и "Open". Как это устранить?

A: Quest ищет файл "QUEST.INI", который включает описания всех кнопок. Необходимо повторно установить SQLWINDOWS/QUEST, чтобы получить правильные настройки. Либо можно указать правильный путь "questdir" в файле WIN.INI в разделе [QUEST].


Centura Team Developer

Q: Почему при инсталляции CTD 1.5 не доступен компонент "Object Compiler"?

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, и как только появится ответ его Вам перешлем.

Однако уже в этом положении можно попробовать что-то сделать. Хотя, возможно вы уже шли этим путем, осмелюсь предложить следующие варианты:

  1. Тяжелый вариант. Попробуйте установить сначала CTD 1.5.0 (если конечно версия доступна, есть смысл проверить и с совсем старой CB 1.02), затем на нее поставить CTD 1.5.1. Только после этого поставить заплатку (PTF).
  2. Вариант с реестром. На машине, где установлена CTD 1.5.0 сделайте экспорт реестра для разделов связанных с CENTURA (лучше всего искать по каталогу, где сидит CENTURA). Далее, обязательно предварительно сохранив собственный реестр, сделать импорт разделов реестра, а затем снова попытаться поставить заплатку (можно, для отдельного варианта, как и в первом случае, переустановить CTD 1.5.1).
  3. Вариант с правкой реестра. Пройтись по реестру и вручную поправить разделы, связанные с CENTURA. Основанием правки может быть распечатка реестра с другого компьютера, где стоит CTD 1.5.0. Далее действия аналогичны.
  4. Проверка ресурсов. Проверить наличие ресурсов памяти HDD, для установки заплатки, и свободного места на системном диске.
  5. INI. Может быть поискать ссылки на версию в INI файлах, сделать там временную правку на 1.5.0, или в соответствии с INI другого компьютера, затем попробовать поставить заплатку и вернуть состояние INI-файлов.
Во-вторых, вообще считаю использование заплаток на продукты не очень корректным действием, так как система отлаживается в комплексе и ожидать от нее нормальной работы после такой операции сомнительно, нужен полный релиз для новых версий.

В-третьих, полностью разделяю Ваше мнение о том, что не будете отказываться от SQLWindows. Я рассматривал многое продукты для разработчиков информационных бизнес систем и нахожу в SQLWindows неоспоримые преимущества. Даже с научных позиций такого "пространственного" представления сложных программных образований, как OUTLINE, нет нигде, кроме того такого, профессионально (но не сложного для восприятия и запоминания) подобранного набора функций и возможностей, как в CENTURA/GUPTA, я не встречал в других даже очень мощных, а поэтому "сложных" средствах разработки приложений, не буду их перечислять.

В целом согласен, что превращение SQLWindows в супермощную систему (в том числе и для WEB) может ее сгубить. Будущее SQLWindows в вылизывании глюков, что достижимо в короткие сроки!


Connectivity

Основные

Q: При попытке вставить пустую строку, производится замена на пробел. Это можно избежать?

A: Маршрутизатор базы данных Centura ведет себя следующим образом:

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

Чтобы избежать проблемы вставки пробела, добавьте ключевое слово "SetZeroLengthStringsToNull = 1" в SQL.INI в секции [WinClient] и [Win32Client].


Q: Как посмотреть протокол работы SQLRouters?

A: В SQLWindows или CTD, Вы можете отслеживать работу маршрутизаторов, добавив строку следующего вида log = <имя файла> в SQL.INI, в секции указанные в таблице:
SQLRouter Section 16-bit Section 32-bit
Sybase [winclient.sybw] [win32client.syb32]
Oracle [winclient.oraw] [win32client.ora32]
ODBC [winclient.odbw] [win32client.odb32]


Oracle

Q: При использовании внешнего result set выводится ошибка с номером 163 ("Result set not active"). Как этого избежать?

A: Это сообщение об ошибке обычно связано FRS*:* файлами, которые не удалены в случае аварийного отказа. Прежде, чем запускать программу, изучите каталог TEMP (C:\TEMP или подобный) и удалите все файлы, начинающиеся с "FRS". Дополнительную информацию можно получить по адресу:
http://www.centurasoft.com/support/tech_info/knowledge_base/ctdinfo/error163.html



Q: Как необходимо сконфигурировать подключение с Oracle для 16-разрядных (SQLWindows) приложений?

A: Запустите SETUP.EXE из каталога "Window" CD Oracle, чтобы установить 16-разрядного клиента. После этого запустите 16-разрядный NET*EASY, чтобы сконфигурировать псевдоним базы данных, например.

Database Alias: MyDB
Protocol: TCP/IP
Host Name: 192.1.11.28
Database Instance: MyDB

Далее, запустите 16-разрядный SQLPlus (Oracle для Windows) чтобы проверить соединение с базой данных, использующей псевдоним MyDB. Если связь не может быть установлена, это - проблема установки Oracle.
Так-же запустите SQLTalk, чтобы связаться с тем же самым псевдонимом базы данных. Для этого требуются правильные установки программного обеспечения для Oracle и следующих секций в SQL.INI:

[ Winclient.dll]
Comdll = sqloraw
[ Oragtwy]
Remotedbname = MyDB, TNS:MYDB



Q: Требуется вставить/модифицировать данные в базу данных Oracle. При этом выводится ошибка "ORA-01465 Invalid hex number". Что делается неправильно?

A: Возможно один из ваших столбцов в базе данных имеет тип "LONG ROW". Для работы с таким типом данных необходимо произвести следующее преобразование SqlSetLongBindDatatype(nBindVarNumber, nDatatype) между выражениями SqlPrepare() и SqlExecute().



Q: Для числовых значений в формате, отличном от US данные отображаются неправильно, при выборке из базы данных Oracle. Как этого можно избежать?

A: Вы должны изменить параметры настройки для тысяч и десятичных разделителей на международный формат. Необходимо выполнить следующий набор команд:

ALTER SESSION SET NLS_NUMERIC_CHARACTER = ‘.,’

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

ALTER SESSION SET NLS_DATE_FORMAT = ' YYYY-MM-DD-HH24. MI.SS'

Направление сортировки:

ALTER SESSION SET NLS_LANGUAGE = GERMAN.

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

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

© faqs.org.ru