faqs.org.ru

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

FAQ по Centura SQLBase

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

Q: Как установить уровень оптимизатора?

A: Параметры настройки оптимизатора могут быть изменены с помощью команды:

ALTER SESSION SET OPTIMIZER_GOAL = <уровень>

Где уровень – это одно из следующих значений:

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


Q: Является ли возможным просмотреть Execution Plan для SQL-запросов Oracle?

A: Oracle отображает execution plan для объектов базы данных с помощью команды "EXPLAIN PLAN". Чтобы воспользоваться этой командой необходимо убедиться, что таблица "PLAN_TABLE" существует. Ее описание находится в файле UTLXPLAN.SQL:

CREATE TABLE PLAN_TABLE (
statement_id varchar2 (30),
timestamp date,
remarks varchar2 (80),
operation varchar2 (30,
options varchar2 (30),
object_node varchar2 (128),
object_owner varchar2 (30),
object_name varchar2 (30),
object_instance numeric,
object_type varchar2 (30),
optimizer varchar2 (255),
search_columns numeric,
id numeric,
parent_id numeric,
position numeric,
cost numeric,
cardinality numeric,
bytes numeric,
other_tag varchar2 (255),
other long);



Q: Как подключиться из SqlWindows к Oracle 8?

A: Используйте 16-битный SqlNet 2.3, поставляемый с Oracle 7.3. По умолчанию устанавливается 32-разрядный клиент для Windows’NT, 95 или 98. Чтобы установить 16-битный SqlNet, необходимо войти в каталог Windows на CD Oracle и запустите 16-битный установщик.



Q: Почему при выполнении запроса, содержащего хранимые функции, которые возвращают VARCHAR2 (VARCHAR), результаты не передаются в приложение?

A: Это связано с тем, что максимальная длина VARCHAR2 в ORACLE – 2000 символов, что трактуется OraGtwy как LONG VARCHAR, даже если явно указать меньшую длину возвращаемого значения (например, VARCHAR(80)), поэтому данные следует принимать в переменные (или поля) типа Long String.



Q: Для вызова хранимой процедуры создана функция CTD; внутри нее вызывается функция SqlPLSQLCommand(). Передача параметров в хранимую процедуру и из нее осуществляется через параметры функции. Однако значения, возвращаемые процедурой в эти параметры не попадают.

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


Q: Что за раздел [ODBCrtr] в sql.ini? Насколько я понял, это настройки роутера. Но в документации я по этому вопросу ничего не нашел. Хотелось бы узнать о них по подробнее.

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

Раздел ODBCrtr в sql.ini использовался в ранних версиях SQLBase для определения удаленной (remotedbname) БД для QDBC взаимодействия. В настоящее время он заменен на настройки в файле ODBC.INI. Смотрите соответствующие разделы документации по SQLBASE Connection. Подробнее о старой версии раздела [ODBCrtr] в sql.ini можно посмотреть в документации версии 5.2 (или 6.0) SQLBase Книга "SQLNetwork: Guide to GUPTA Connectivity " стр. 3. 24. В версии 7.5 SQLBase этот раздел [ODBCrtr] может использоваться для определения параметра buffrow (и других) для контроля за буферизацией ODBC взаимодействия ( см. стр. 8-11, 4-8, 4-10 и др. электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matternhorn).

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

Раздел ODBCrtr в sql.ini использовался в ранних версиях SQLBase для определения удаленной (remotedbname) БД для QDBC взаимодействия. В документации версии 5.2 (или 6.0) SQLBase Книга "SQLNetwork: Guide to GUPTA Connectivity " на стр. 3. 24. Сказано буквально следующее:

(начало цитаты)

ODBC remotedbname

Section [odbcrtr]

Syntax remotedbname=db_name, connect__string

Description db_name specifies the database. The name cannot be more than 8 characters.

The connect _string contains one required value, the DSN, which is the name of the data source as returned by SQLDataSources. This value must match the DSN value defined in ODBC. INI.

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.

remotedbname=DEMO, DSN=MYDB;UID=SYSADM; PWD=SYSADM
(конец цитаты)

Не вдаваясь в детальный перевод, можно сказать, что информация об удаленной БД 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, 1999
CTD 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.


Microsoft SQLServer

Q: На некоторых машинах, с абсолютно идентичными DLL, SQL.INI файлами и установкой ODBC, производится попытка установки связи. На некоторых машинах выдается ошибка, на других подключение безаварийно. Как можно устранить эту проблему?

A: Эта ошибка связана с проблемой определения путей загрузки DLL. Необходимо исследовать, как загружаются необходимые модули на машинах с нормальной свяью и сравнить со сбойными машинами. Некоторые драйверы устанавливает ODBC Администратор(ODBC32. DLL). Это приводит к несоответствию версий ODBC Engine.



Q: Как можно использовать "begin transaction" и "commit transaction" в сохраненных процедурах для MS SQL Server (ver. 6.0 или 6.5)?

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



Q: Как можно конкатенировать столбцы в утверждениях SELECT?

A: Использование ‘||’ не отрабатывается.
SQL Server использует знак '+' для конкатенации столбцов, как показано в следующем примере:
SELECT colA + colB + colC FROM tableD INTO :sVar


JDBC

Q: Нет доступа к JDBC-драйверам для работы. Что неправильно?

A:

  1. Убедитесь, что используется коммерческий выпуск JDBC драйвера а не файлы .class от бета выпуска.
  2. Переименуйте каталог установоки следующим образом: C:\Centura\centura\java\sqlbase\
  3. Чтобы зарегистрировать драйвер, необходимо использовать следующий способ включения: "centura.java.sqlbase.SqlbaseDriver "
Чтобы проверить подключение JDBC, используйте утилиту JDBCTest, доступную на http://www.intersolv.com

ODBC

Q: При попытке доступа к SQLBase из MS Access выводится сообщение "Table ‘TMP, % # MAU' alredy exist". Как этого избежать?

A: Детальная информация по этой теме доступна по адресу:
http://www.centurasoft.com/support/tech_info/bulletins/access~1.html



Q: Используется некоторое программное обеспечение для загрузки данных в SQLBase с использованием ODBC, но при этом используются кавычки для описания столбцов, и следовательно SQLBase не распознает их правильно. Имеется ли обходной путь?

A: При использовании приложений, которые создают SQL-запросы подобно "INSERT INTO "INETLOG"("ClientHost", ..) ... " для вставки данных в SQLBase, существует проблема в том, что кавычки в именах столбцов и таблиц не воспринимаются. Обходным вариантом является следующий шаг. Необходимо создать таблицы и столбцы с кавычками в именах.
Например:

CREATE TABLE "INETLOG"("ClientHost" char (255), ...)
В SQLBASE.

Либо переименуйте уже существующие таблицы.



Q: Используется CTD/SQLWindows SQLRouter для ODBC. При этом ODBC драйвер не перечислен в списке доступных драйверов. Что можно сделать?

A: Невозможно проверить все ODBC драйверы. Если драйвер совместим с ODBC 2.0, то он должен работать. Если имеются трудности с типами данных, обратитесь к интерактивной справке для получения информации о DCC.INI.



Q: Как я восстанвить информацию из системного каталога ODBC источника данных?

A: Это может быть выполнено с помощью непосредственного подключения ODBC API. Либо с помощью использования ODBCTESTX.OCX(свободно распространяемый ActiveX компонент), который работает с ODBC API.



Q: При попытке соединяться с источником данных ODBC, появляется ошибка 401 "Cannot connect to database". Как можно избежать этого?

A: Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это, как предполагается, делает соединение с источником данных быстрее. Этот файл хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку, при правильно сконфигурированом ODBC.



Q: Как можно обойти ошибку 1811 "File not found" при попытке соединения с ODBC источником данных?

A: Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это, как предполагается, делает соединение с источником данных быстрее. Этот файл хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку, при правильно сконфигурированом ODBC.


Q: При замене ODBC источника данных, для использования другой базы данных Centura хранит соединение со старой базой данных. Как это устранить?

A: Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это, как предполагается, делает соединение с источником данных быстрее. Этот файл хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку, при правильно сконфигурированом ODBC.



Q: Драйвер не поддерживает псевдонимы столбцов. Возможно ли решить эту проблему?

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.

Ваши замечания и предложения направляйте по адресу: webmaster@interface.ru

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

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

© faqs.org.ru