powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / OLE DB & ODBC with MS SQL Server 2000
27 сообщений из 27, показаны все 2 страниц
OLE DB & ODBC with MS SQL Server 2000
    #33139783
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Занимаюсь тестированием разных Database Interfaces с MS SQL Server 2000 . Что-то странное происходит с OLE DB : на локалке хорошо пашет, по сети тормозит, по сравнению с ODBC . Не могли бы вы покидать сюда параметры коннектов для OLE DB & ODBC (кто, в чем силен). Копаюсь в Тырнете, пытаясь найти какие-нибудь хитрые настройки для увеличения производительности данных интерфейсов.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33140013
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да настройки-то sqlca обычные:
Код: plaintext
1.
2.
3.
4.
[SQLCA]
DBMS="OLE DB"
DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='n-buh',DelimitIdentifier='No',PROVIDERSTRING='database=zpt_new'"
LOGID="sa"
AUTOCOMMIT="FALSE"
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33140196
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, такие вещи я уже испробовал, но это не помогло "отцу русской демократии".
А случаем не знаешь, как использовать OLE DB interfaces , такие как:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
IAccessor
IDBInitialize 
IColumnsInfo
IDBProperties 
ICommand
IOpenRowset 
ICommandProperties
IRowset 
ICommandText
IRowsetInfo 
IDBCreateCommand
IDBSchemaRowset 
IDBCreateSession
ISourcesRowset
Описалово у мелкософта есть на них, но вот как это использовать (а главное зачем!) в проекте на PowerBuilder , пока не ясно.
Еще заметил, что ODBC подключается без проблем, а у OLE DB есть траблы при вставке данных в таблицу. Копаюсь с этим. У нас сейчас MSS . На данный момент проще перетащить все на ODBC , чем на OLE DB . Обидно...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33140607
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интерфейсы я не видел, чтобы кто-то использовал в PB. обычно всё, что надо, решается в хранимых процедурах. А вообще, oledb нормально работает, всё insert'ится спокойно.. я слышал только об этих глюках oledb.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33140660
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Build 7509 . Нашел, что в нем есть глюки с OLE DB . Щас надо народ нужный "попинать", чтобы скачали обновление...

А на счет интерфейсов, приведенных выше, думал какие-то вкусности поиметь, типа уникальных фичь, но особо ничего не вдохновило. Акромя:
IDBAsynchNotify
IDBAsynchStatus

Памятуя о том, что Async database parameter не поддерживается в OLE DB , можно было бы чего-то придумать с асинхронным режимом. Но это из области гипотез...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33141032
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из всего async'хронного, у нас на фирме только кто-то сделал progress bar, показывающий работу хранимой процедуры, считающей зарплату (или вроде того). Реализовано это было с помощью второго соединения, в котором происходило периодическое опрашивание таблицы-журнала.. то есть, безо всяких параметров. а зачем нужн о делать асинхронные запросы?
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33141147
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту тему я уже подымал на форуме. Коротко это выглядит примерно так:

У нас используется довольно развитый механизм запросов к базе из интерфейса программы, юзера сами могут формировать сложные запросы. Когда запрос сделан, такой, что должно выбраться много данных, то при нажатии на кнопарь, юзер может его прервать, при этом у нас как раз и используется параметр Async . Филипп выкладывал реализацию асинхронного режима, такой же вариант, как и у тебя. Я его реализовал, но мне показалось, что там можно прервать запрос только после того, как выбралась первая строка, а на нее уходит, как правило, большая часть времени (при сложном запросе). Дальше, после выбора первой строки, параметр Async не действует. Т.е. вариант Филиппа и наш будут работать одинаково, а по сему и не стали ничего менять, тем более, что сам механизм закопан далеко, в родительских обьектах, а раз работает - ну и ладно...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33144679
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник вопрос. Есть PowerBuilder 9.0.2 Build 7509 с ODBC & MSS все работает как надо. Загвоздка с OLE DB :
1. Начало транзакции
2. Делаем апдейт dw
3. Вызываем процедуру. В принципе, не важно какую, но здесь она возвращает @@IDENTITY . Пробовал делать процедуру-пустышку, результат тот же (см. ниже)
4. Сразу после вызова процедуры идет ошибка:
(999)
Microsoft OLE DB Provider for SQL Server
Object was open.

5. Хотя вставка данных, в конечном счете происходит как надо.

Чтобы это могло быть? Я так подозреваю, что, поскольку изначально, приложение было заточено под MSS , то скорее всего дело в каких-то настройках базы/транзакций или еще чего-нибудь...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33144779
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрень полная:
Код: plaintext
1.
2.
3.
4.
5.
6.
long id
id =  0 
Declare gcu Procedure For GetIdentity @id =  0  output;
Execute gcu;
FETCH gcu INTO :id;
CLOSE gcu;
Код: plaintext
SQLCA.GetIdentity( id )

Это, на мой взгляд, эквивалентные записи (почти!). Первый вариант проходит под OLE DB , второй выдает вышеприведенную ошибку. Здесь SQLCA , дочерний обьект от стандартного. В Local External Functions для SQLCA прописано:
Код: plaintext
subroutine GetIdentity(ref long ID) RPCFUNC ALIAS FOR "dbo.GetIdentity"

У нас все вызовы процедур организованы по второму варианту.
Что это все значит?
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33145108
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция объявленная как RPC НЕ ДОЛЖНА возвращать resultset.

Покажите текст процедуры GetIdentity?
У вас там кроме установки значения OUTPUT параметра наверное есть еще и SELECT.

что то типа
CREATE PROC GetIdentity(@ident int OUTPUT)
...
SET @ident = ....
SELECT @ident
...
вот из-за этого SELECT и возникает Object was open.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33145199
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да:
Код: plaintext
1.
2.
3.
4.
5.
CREATE PROCEDURE GetIdentity
@ID int OUTPUT
AS
select @ID = @@IDENTITY
return
GO
Какие будут рекомендации по устранению проблемы? Желательно, чтобы после исправлений все работало со всеми тремя вариантами подключения.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33145492
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта процедура не является причиной ошибки "Object was open", поскольку никакого result она не генерирует.
Вы похоже не поняли ничего из того что я сказал.
Эта ошибка возникает тогда, когда есть результат SELECT-а там где PB его не ждет.
Это может быть и dw на основе SP, которая возвращает два resultset вместо одного.
Это может быть RPC которая возвращает resultset хотя не должна.
Это может быть SP повешенная на Insert/Update/Delete которая возвращает resultset хотя этого от нее не требуется.

Сложность в том, что условие это (лишний result) возникает на каком-то действии, а ошибка генерируется на любом последующем.

Рекомендации - думайте и ищите. Я в подобной ситуации вынужден был проверить несколько сотен процедур.

Желательно, чтобы после исправлений все работало со всеми тремя вариантами подключения.
... и еще чтоб кофе варить умела.

я б не стал на это закладываться. то и дело приходится откручивать какой-нть workaround сделанный несколько лет назад для PB7+MSS чтоб работало на PB9+OLE.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33145530
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пилите Шура, пилите...

Спасибо и на этом. А ты можешь обьяснить мне, убогому, почему везде народ
пишет, что предпочтительно выбирать OLE DB ? Ну как мне это доказать
начальству? На ODBC текущий проект работает без переделок. А для OLE DB надо напрячь мозги, шоб заработало. Угадай с трех раз, какой вариант
между OLE DB & ODBC выберет руководство? Даже мои тесты на
производительность никого не убедят ...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33146307
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально для убогих избранные места из документации
BOLOLE DB is a low-level, COM API that is used for accessing data. OLE DB is recommended for developing tools, utilities, or low-level components that need high performance. The OLE DB Provider for SQL Server (SQLOLEDB) is a native, high performance provider that accesses the SQL Server TDS protocol directly.
BOLOLE DB is the API recommended for tools, utilities, or system level development needing either top performance or access to SQL Server features not exposed through ADO. The core capabilities of the OLE DB specification provide all the data access functionality needed by most applications. In addition, OLE DB allows individual providers to define provider-specific mechanisms to support additional features of the data engine accessed by the provider. ADO applications cannot access some SQL Server features exposed through provider-specific features of the OLE DB Provider for SQL Server, so applications needing to use the provider-specific features of the OLE DB Provider for SQL Server must use the OLE DB API. These features include:

An IRowsetFastLoad interface to the SQL Server bulk copy component.


An ISQLServerErrorInfo interface to get SQL Server-specific information from messages and errors.


A LINKEDSERVERS rowset that exposes catalog information from the linked servers used in SQL Server distributed queries.


Various provider-specific properties to control SQL Server-specific behaviors.


OLE DB also supports the XML functionality of SQL Server 2000. This provides an easy migration path for Internet applications coded to use OLE DB to retrieve a rowset and then convert it into an XML document. The application can instead use OLE DB to execute an XPath query or a SELECT statement with a FOR XML clause, in which case the result set is built as an XML document on the server rather than having to be converted on the application computer. Most application working with XML are written in ADO or use URLs, which are less complex than OLE DB.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33146325
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я, конечно, не модератор, но уважаемый Локшик Марк, следите за своими словами! гляжу на ваши "подколы", и вспоминаю школьных учителей (в основном женщин), которые любят свои жизненные проблемы выливать на учениках (с характерным тоном человека, сделавшего какую-то глупость, но выдающего себя за авторитета). Вы представляете, с кем вы ассоциируетесь!
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33146351
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savosin_sergeyя, конечно, не модератор, но уважаемый Локшик Марк, следите за своими словами! гляжу на ваши "подколы", и вспоминаю школьных учителей (в основном женщин), которые любят свои жизненные проблемы выливать на учениках (с характерным тоном человека, сделавшего какую-то глупость, но выдающего себя за авторитета). Вы представляете, с кем вы ассоциируетесь!
Человек сам назвал себя убогим постом выше, поэтому я лишь повторяю то определение, которое он себе дал. В соседнем топике, между прочим, некто Black Savage тоже за своими словами не следил.
Да, и какую же глупость я сказал?
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33146378
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
begin_of_flood
не берусь судить и осуждать!
но не смог сдержаться.
открываешь форум почитать
а не напрягаясь разбираться
eoflood
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33146495
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня почему то всегда ассоциировалось ODBC с WINAPI, OLE DB с OLE/COM. Соотвествующе WINAPI быстрее OLE (вызов функции DLL быстрее вызова метода интерфейса через кучу оболочек-классов), следовательно ODBC быстрее OLE DB. Если же брать рассуждения в документациях о том, что OLE DB "low-level high performance", то по сравнению с ADO, которое еще кучей оберток поверх сидит, наверное так оно и есть. Может быть конечно ошибаюсь, а может быть и нет.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33146557
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSУ меня почему то всегда ассоциировалось ODBC с WINAPI, OLE DB с OLE/COM. Соотвествующе WINAPI быстрее OLE (вызов функции DLL быстрее вызова метода интерфейса через кучу оболочек-классов), следовательно ODBC быстрее OLE DB. Если же брать рассуждения в документациях о том, что OLE DB "low-level high performance", то по сравнению с ADO, которое еще кучей оберток поверх сидит, наверное так оно и есть. Может быть конечно ошибаюсь, а может быть и нет.
Еще цитата про ODBC
BOLODBC can be used in tools, utilities, or system level development needing either top performance or access to SQL Server features, and which are not COM applications. ODBC, like OLE DB, allows individual drivers to define driver-specific mechanisms to support additional features of the data engine accessed by the driver. These features include:
Соответственно, я так понимаю, OLE DB recommended производителем для COM приложений.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33147178
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы. Будем думать, копать дальше...

P.S.: в виртуале меня можно называть, как угодно и кем угодно. Я никогда на это
не обижаюсь...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33147275
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSУ меня почему то всегда ассоциировалось ODBC с WINAPI, OLE DB с OLE/COM. Соотвествующе WINAPI быстрее OLE (вызов функции DLL быстрее вызова метода интерфейса через кучу оболочек-классов), следовательно ODBC быстрее OLE DB.
И еще про ODBC. WinAPI вызовы то конечно быстрее, но ведь вызов функций драйвера ODBC не на прямую из программы идет, соответственно там тоже есть дополнительные накладные расходы. Так что и с этой точки зрения не понятно кто быстрее...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33148680
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как можно управлять параметрами коннекта в OLE DB , которые
доступны в секции Driver Information , в Database Painter для
OLE Microsoft OLE DB ? Понятно, что эта секция частично отражает
состояние коннекта, установленное в Profile Properties . Я так подозреваю,
что не все можно выставить из Profile Properties , поэтому и возник
такой вопрос...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33150771
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейЭта процедура не является причиной ошибки "Object was open", поскольку никакого result она не генерирует.
Вы похоже не поняли ничего из того что я сказал.
Эта ошибка возникает тогда, когда есть результат SELECT-а там где PB его не ждет.
Это может быть и dw на основе SP, которая возвращает два resultset вместо одного.
Это может быть RPC которая возвращает resultset хотя не должна.
Это может быть SP повешенная на Insert/Update/Delete которая возвращает resultset хотя этого от нее не требуется.

Сложность в том, что условие это (лишний result) возникает на каком-то действии, а ошибка генерируется на любом последующем.

Рекомендации - думайте и ищите. Я в подобной ситуации вынужден был проверить несколько сотен процедур.

Перерыл кучу процедур. Ничего там нет. Но обнаружил вот, что:
1. Есть dw , сделанное на селекте.
1. В коде есть строка dw.Update() .
2. Беру Profiler , смотрю какой инсерт генериться, для выше обозначенного dw .
3. В код, вместо dw.Update() , ставлю полученный инсерт.
4. Все работает без ошибок

Что же это могет быть? Поигрался с Update Properties для dw : выставлял разные Where Clause for Update/Delete и Key Modification - не помогло. Даже проверил типы полей и сравнил их с тем, что есть в базе. Проверил Edit Sourse для этого dw : сравнивал, какие поля апдейтятся там и в Update Properties . Вообщем, пытался отыскать:
ЗоринАндрей...когда есть результат SELECT-а там где PB его не ждет.
Куда еще глядеть то?
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33150874
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageКуда еще глядеть то?
Можешь закинуть на Andrew.Zorin_AT_gmail.com проект по минимуму - CREATE TABLE + параметры подключения в SQLCA + окошко + datawindow ???
я посмотрю как у меня на девятке будет себя вести. может что удастся раскопать.
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33152923
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To ЗоринАндрей
Спасибо за предложенную помощь, но боюсь, что это не возможно.
Выковыривать окно из проекта - гиблое дело, т.к. навешана всякая
всячина. Проблему найти так и не удалось. У меня осталась только
одна надежда, что это баг PowerBuilder 9.0.2 Build 7509 .
На сайте Sybase нашел лишь одно упоминание о схожей
ситуации в PowerBuilder 8.0.3 Maintenance Release (Build 9704)
- Fixes since PB 8.0.2 MR (Build 9506)
. Типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Change Request#:  279120                             Priority:  1 
Product Name: PB Enterprise -  8 . 0 . 1                       OS: Microsoft Windows  2000 
Product Component: DB OLE DB

Fixed in Version #:
 8 . 0 . 3 

Description:
Using the OLEDB driver, PB selectblob will use the existing connection
to retrieve the blob object. Otherwise, it make the OLEDB Column in
Datawindows useless and get kind of "RESULTSET PENDING" error.
("Microsoft OLE DB Provider for SQL Server Object was open.")
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33743540
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такая же проблема. Сообщение "Объект был открыт" возникает в случае использования "Retrieve As Needed".
К примеру, открыли окно-список, но до конца не отритривили. Выбираем любую запись из списка, редактируем и пытаемся сохранить. В ответ получаем сообщение "Объект был открыт".
Как решить пока не думал, может быть отказаться от Retrieve As Needed...
...
Рейтинг: 0 / 0
OLE DB & ODBC with MS SQL Server 2000
    #33743744
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
When the Microsoft OLE DB Provider for SQL Server (SQLOLEDB) creates implicit connections, these connections are not pooled.

The provider creates implicit connections under the following two situations: • If you create additional sessions from the same data source object while keeping the first session open, the provider creates implicit connections to the SQL Server for each additional session.
• If you execute multiple commands from the same connection, and you are specifying read-only, forward-only (default resultset) cursors. Because SQL Server doesn't allow more than one pending resultset per connection per default-resultset (also known as firehose) cursor, the provider will implicitly create another connection if DBPROP_MULTIPLECONNECTIONS is set to VARIANT_TRUE (the default).
In both cases, the implicit connection, which is created by the provider, is not pooled. This can lead to poor performance compared to opening and closing the connection explicitly. For more information on this behavior, see the article "How Consumers Use Resource Pooling" at the following MSDN Web site:
http://msdn.microsoft.com/library/psdk/dasdk/msda3753.htm (http://msdn.microsoft.com/library/psdk/dasdk/msda3753.htm
Оригинал тут: http://www.kbalertz.com/kb_Q271128.aspx
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / OLE DB & ODBC with MS SQL Server 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]