Временная проблема с таблицами в службах Reporting Services 2000 - PullRequest
2 голосов
/ 29 апреля 2009

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

Я получаю сообщение об ошибке "Не удалось сгенерировать список полей для запроса. Неверное имя объекта '#xxxx'"

Я прочитал это потому, что когда диспетчер отчетов пытается выполнить PrepareQuery, он сталкивается с трудностями, поскольку временная таблица еще не существует, это правильно? Если да, то есть ли у вас обходные пути?

Ответы [ 4 ]

3 голосов
/ 29 апреля 2009

Я столкнулся с этим один раз ... точно то же самое, на самом деле. Я исправил это, поместив эту строку в мой SP перед созданием временных таблиц:

SET FMTONLY OFF

Это должно сработать.

0 голосов
/ 29 апреля 2009

Я не особо разбираюсь в услугах отчетности, но для меня это звучит точно.

Мне кажется, что вы не сможете использовать временную таблицу для хранения данных. Возможно, вам придется использовать постоянный стол вместо.

Я бы спросил себя, почему я все равно использовал отдельную таблицу. Данные уже существуют в других таблицах? Могу ли я получить его оттуда вместо? Иногда у вас нет выбора в использовании отдельной таблицы, просто убедитесь.

0 голосов
/ 29 апреля 2009

Я не знаю, что именно вызывает проблему, но вы можете попробовать использовать таблицу переменных.

declare @table table (Field int)
0 голосов
/ 29 апреля 2009

Единственный способ очевиден: сделать временную таблицу постоянной и управлять ею самостоятельно (удалять строки после использования и т. Д.). Это может быть как быстрее, так и индексируемым, и вы можете добавлять ключи по мере необходимости для обеспечения целостности. Он также может действовать как кеш для длительных запросов.

Если вы уверены, что когда-либо будет только один пользователь, вызывающий sp, вы можете сбросить данные из таблицы, используя усечение вместо удаления.

Не сильно помог, но я никогда не нашел другого способа сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...