|
|
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Коллеги, помогите ! PB 8 + MS SQL 2000 через OLE DB В приложении используются временные таблицы. Чтобы dw painter мог видеть эти таблицы, пытаюсь из ISQL создавать эти самые временные таблицы командой CREATE TABLE #t1( id int). Но временные таблицы НЕ СОЗАЮТСЯ! Сначала думал это глюк какой. Но потом выяснил, что в OLE DB драйвере для MSSQL 2000 используется механизм выполнения запросов через PREPARE. А этот механизм использует выполнение запроса в хранимой процедуре. И в BOLе так и сказано, что временные объекты надо создавать без PREPARE, а напрямую. Но как заставить PB делать это напрямую? Причем когда в приложении выполняется EXECUTE IMMEDIATE с тем же CREATE TABLE #t1... , то в profilerе видно, что никаких PREPARE нету, идет прямое выполнение команд, и все работает! Посоветуйте, как создать временную таблицу из PB ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 16:25 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
попробуй две решётки: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 17:44 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
savosin_sergeyпопробуй две решётки: Код: plaintext Это глобальные таблицы, не то - они видны всем сессиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 17:58 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
две решётки проходит, но при этом создается ГЛОБАЛЬНАЯ временная таблица, которая видна другим пользователям. Вся радость локальных временных таблиц в том что там формируется выборка только для текущей сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 17:58 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Можно сделать так прямо в sql для dw : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В данном случае sp_fill_TabMerge - хранимая процедура на сервере, которая заполняет данными времянку #TabMerge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 18:05 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
2 bumsy Это круто!!! Не знал что так можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 18:34 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Правда если сохранить dw c таким sql (пример выше), а потом еще раз войти в редактор sql для этого dw, то код будет отформатирован powerbuilder'ом по его внутренним каким-то правилам, а также добавятся пустые строки. (в 6-ке и 9-ке это происходит). P.S. Говорят, что такой sql надо править через edit source. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 19:50 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
2 bumsy В PB 6 действительно работает. В PB 8 стал проверять, что то не получается, до конца проверить не успел А какая у Вас версия PB, СУБД и какой интерфейс используете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 20:51 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
rhsКоллеги, помогите ! В приложении используются временные таблицы. Чтобы dw painter мог видеть эти таблицы, пытаюсь из ISQL создавать эти самые временные таблицы командой CREATE TABLE #t1( id int). Но временные таблицы НЕ СОЗАЮТСЯ! Чтобы dw painter мог видеть эти таблицы (локальные для каждой сессии), их нужно создавать из ISQL в Database painter PowerBuilder'а, т.к. коннект у него и DW painter'а общий. А в приложении писать например так, как предложил bumsy или через execute immediate. У нас именно такая схема и работает с Sybase ASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 06:47 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
2 Andyn Дык, так и делаю. В PB 6 все получается. А в PB8 когда создаю в ISQL в Database painter PowerBuilder'а таблица в базе не создается, и dw ее не видит. Причем если использовать интерфейс MSS SQL Server 6.x, то все работает, а если SQLOLEDB, то не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:01 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
автордве решётки проходит, но при этом создается ГЛОБАЛЬНАЯ временная таблица, которая видна другим пользователям. Вся радость локальных временных таблиц в том что там формируется выборка только для текущей сессии. Вся радость глобальных временных таблиц, что они видны всем пользователям, но содержат данные только текущей сессии. Их можно создать один раз вместе с базой и пользоваться всю жизнь, хоть в паинтере PB, хоть в приложении. Это для ASA, неужели в MS SQL по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 17:15 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Конечно по другому, где MSSQL, а где ASA В MSSQL если одна сессия создала глобальную времянку, то другая сессия не может ее создать - она же видна всем. Так что нужно проверять, создана ли она уже. И главное - если сессия, которая ее создала, дисконектиться, то такая таблица автоматом удаляется, обламывая прочие сессии. Конечно можно описать глобальную таблицу на автоматическое создание, только не как у ASA в метаструктуре, а через заднее место в TempDB. Но данные будут все равно у сессий общие, так что толку от такой таблички все равно никакого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 17:33 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
авторА какая у Вас версия PB, СУБД и какой интерфейс используете ? 9.0.3 8511, MS SQL 2000, интерфейс MSS и OLE DB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 17:38 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
2 bumsy Слушай, а dw c таким sql вы создаете через драйвер OLEDB или может через MSS ? У меня на синтаксис sql не ругается, но список столбцов в dw получается пустой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 11:25 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Нашел описание проблемы на сайте Sybase.com Строка поиска “create temp table ms” Это текст найденной ссылки: Solved Cases (#10998131)-PowerBuilder 0800-PC Windows NT (Solved Cases) In Powerbuilder 8.0.4 when using the OLEDB driver to connect to MS SQL Server 2000, insert fails on temp tables which are created using the #temp syntax. The inserts work fine when the temp tables are created using the ##table syntax. This problem does n Category: Support and Trouble Shooting Date: Mar 30, 2004 Но эта ссылка закрыта! Я не могу в нее залезть!! Надо иметь какие-то специальные права доступа!!! Типа иметь договор на техническую поддержку. Товарищи! У кого есть договор с Sybase? Посмотрите, пожалуйста, чего там пишут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 13:12 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
ASCRUSКонечно по другому, где MSSQL, а где ASA В MSSQL если одна сессия создала глобальную времянку, то другая сессия не может ее создать - она же видна всем. Так что нужно проверять, создана ли она уже. И главное - если сессия, которая ее создала, дисконектиться, то такая таблица автоматом удаляется, обламывая прочие сессии. Конечно можно описать глобальную таблицу на автоматическое создание, только не как у ASA в метаструктуре, а через заднее место в TempDB. Но данные будут все равно у сессий общие, так что толку от такой таблички все равно никакого. если требуется таблица, с которой будут работать несколько коннектов (msSqlServer), то смысл ваще делять "времянку"? проще сделать обычную таблицу, выделив столбец для @@spid -- с помощью него "отфильтровывать" данные для нужного соединения, при завершении работы -- очищать свои данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 17:47 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
rhsСлушай, а dw c таким sql вы создаете через драйвер OLEDB или может через MSS ? У меня на синтаксис sql не ругается, но список столбцов в dw получается пустой. Через MSS - все работает. А вот через OLE DB действительно такая же ситуация - dw пустое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 13:45 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
savosin_sergey если требуется таблица, с которой будут работать несколько коннектов (msSqlServer), то смысл ваще делять "времянку"? проще сделать обычную таблицу, выделив столбец для @@spid -- с помощью него "отфильтровывать" данные для нужного соединения, при завершении работы -- очищать свои данные. Дык, как раз требуется таблица, с которой будет работать только один коннект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 15:27 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
я имел ввиду возможность того, что отчёт (или где используется временная таблица?) могу запустить два и более пользователя -- или только один! если только один -- то спокойно работай хоть с двумя клетками, хоть с обычной таблицей (только придётся её очищать после выполнения отчёта) . и вообще: авторЧтобы dw painter мог видеть эти таблицы, пытаюсь из ISQL создавать эти самые временные таблицы командой CREATE TABLE #t1( id int). Но временные таблицы НЕ СОЗАЮТСЯ! может сделать отчёт на обычной таблице, а потом (когда отчёт работает) везде (в edit source, например) поставить клетку в рабочей "временной" таблице? . Честно, сам я не использовал временные таблице в такой связке (dw +create table #a_table), но попробуйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 15:45 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
2 savosin_sergey Спасибо, что откликнулись. Да, временные таблицы используются для создания отчетов. В принципе, можно использовать постоянную таблицу, но - не очень удобно фильтровать строки по @@spid. - совсем неудобно, если ее надо проиндексировать. - если она большая, и ее используют многие пользователи, то видимо будут блокировки. - главное, надо переписывать значительную часть приложения, которая работала с временными таблицами через MSS. Вариант с подстановкой символа # к имени таблицы не пробовал, но, чую, это будет большой геморрой. Ведь временная таблица, прежде чем попасть в отчет, создается и наполняется из скрипта. т.е. при изменении скрипта надо вычистить все #, отладить, сохранить, открыть в edit source, добавить #. И опять же надо переписывать приложение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 16:35 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
а чем не нравится mss-драйвер? если не секрет ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 20:45 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Зачем мучиться? В DW можно указать в качестве "data source" хранимую процедуру, в которой будет создаваться, заполняться и "возвращаться" локальная временная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 00:58 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
savosin_sergeyа чем не нравится mss-драйвер? если не секрет ;-)MSS native driver использует DB-Library .dll функционал, которого не обновлялся с SQL Server 6.5 P.S. В "десятке" MSS уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 01:08 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
Просто высказывание: Чем временная таблица для одного пользователя отличается от dw или datastore в программе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 09:29 |
|
||
|
как создать временную таблицу из PB ?!
|
|||
|---|---|---|---|
|
#18+
spas2001Просто высказывание: Чем временная таблица для одного пользователя отличается от dw или datastore в программе Заполнение временной таблицы с помощью хранимых процедур на сервере займёт гораздо меньше времени чем заполнение dw или datastore в программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 09:57 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33387578&tid=1338001]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 389ms |

| 0 / 0 |
