|
|
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Интересная трабла обнаружилась: В одной из ХП есть такой код SELECT idKlient, ........ into #Klienty FROM Klienty получается более 10000 записей Так вот, запуская эту ХП из QA, получаю нормальные данные, а если запускаю из Access, то выдает усеченные записи, как выяснилось в табличку #Klienty попадает только 10000 записей, то есть то число, которое прописано в параметрах Аксесса (количество записей, которые кешируются в проекте). Может оно так и надо, но я удивлен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 13:41 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
см. параметр MaxRecord по умолчанию он равен 10 000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 13:44 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Это понятно, но почему этот параметр влияет на ХП, которая работает на сервере? Или это нормально когда ХП выдает разные результаты в зависимости от того откуда ее запустили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 13:47 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Кто тебе сказал, что ХП не дает больше 10000 записей? Это аксес больше не берет Нигде ничего на ХП не влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 13:52 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
енто сделано шобы ваш любимый сетевой трафик не перегружалси придет на клиента стока записёв скока указано в параметрах а если хоцца ишо, то жми кнопку внизу окна и новая порция прискачет а не ндравица то ставь 0 в параметрах и тогда усе будет итить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 13:54 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
>но почему этот параметр влияет на ХП, которая работает на сервере? Потому что есть такая штука как настройки (директивы, хинты и т.п.), с помощью оных можно управлять поведением сервера. Открой профайлер да и посмотри что Акес шлет сиквелу, SET ROWCOUNT 10000 он шлет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 13:55 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Во, блин, накинулись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 14:05 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Видимо я плохо объяснил. Сама ХП выдает не более 20 записей. Проблема в том, что значения в этих 20-ти записях отличаются в зависимости от того, откуда запущена ХП. Разбор полетов показал, что проблема проявляется в этом куске ХП: SELECT idKlient, ........ into #Klienty FROM Klienty при запуске из Аксесса в табличку #Klienty попадают не все записи из таблицы Klienty, а только 10 000 (если MaxRecord в Аксессе = 10 000) Потом эти записи внутри ХП группируются, обсчитываются и.т.п и выдается сводная информация по месяцам (те самые 20 записей). Так вот при запуске этой ХП из QA мы имеем правильные помесячные данные, а при запуске из Access - нет. А если я увеличиваю значение MaxRecords до, скажем 100 000 (то есть большее, чем количество записей в таблице Klienty), то и в Аксессе эта ХП показывает правильные результаты. Повторюсь, может оно и правильно, может оно так и должно быть, только такое поведение меня несколько озадачило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:10 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
>А если я увеличиваю значение MaxRecords до, скажем 100 000 Тебе уже Хам трамвайный написал: 0 (ноль)- все записи. И не мучайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:13 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
При работе этой ХП в Аксесс передается только 20 записей. Тогда причем здесь MaxRecords? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:17 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Есть такая полезная утилита - Profiler При выполнении этой процедуры из Ассекса первая строка SET ROWCOUNT 10000 а затем вызов твоей процедуры тут-то и собака порылась поставь в процедуре SET ROWCOUNT 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:32 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Попробуйте с какой-нибудь своей табличкой: CREATE PROCEDURE xp1 AS SET NOCOUNT ON SELECT idKlient into #Klienty FROM Klienty SET NOCOUNT OFF select count(*) from #Klienty RETURN При MaxRecords, скажем 100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:33 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
Кажись дошло наконец-то.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:35 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
хочу уточнить SET ROWCOUNT 10000 получается эта команда северу не слать 10000 записей, а обработать только 10000 записей. соответственно раз 10000 записей обработано то и шлется 10000. а если известно что получится(отправится) 20 записей из обработки 20000 все равно нада ставить SET ROWCOUNT 20000 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 17:51 |
|
||
|
Stored Proc + AccessXP = Проблема
|
|||
|---|---|---|---|
|
#18+
На это я и попался. MaxRecords 10000, который установлен в Аксесс влияет на все выполнение ХП, а не только на вывод результирующих записей, соответственно для правильного выполнения ХП вне зависимости от контекста теперь ставлю в начало процедуры SET ROWCOUNT 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 10:47 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32235336&tid=1679919]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
79ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
3ms |
| others: | 227ms |
| total: | 435ms |

| 0 / 0 |
