Повторяющийся вызов SP внутри другого SP вызывает дублирование имен PK во временной таблице в вызываемом SP при использовании в SSRS.

У меня есть два SP в SQL Server. SP1 многократно вызывает SP2 в цикле с разными параметрами и сохраняет выходные данные SP2 во временной таблице.

SP2, который повторно вызывается SP1, имеет несколько временных таблиц с «неназванными» первичными ключами.

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

В SP2 в самом начале я проверяю и удаляю все временные таблицы в SP2, если они существуют.

Кажется, это отлично работает в SSMS, но когда я использую SP1 в SSRS, несколько раз выдается ошибка в SP2 из-за нарушения имени PK.

Невозможно вставить повторяющийся ключ в объект #tempTable.

Есть ли обходной путь для этой проблемы?


person Anuj Sethi    schedule 03.03.2017    source источник
comment
Если вы хотите вставить повторяющиеся значения во временную таблицу, то почему вы устанавливаете этот столбец как PK? Похоже, ответ здесь состоит в том, чтобы избегать этого обозначения при создании временной таблицы, но было бы полезно, если бы вы могли привести пример структуры временной таблицы и кода цикла.   -  person Wesley Marshall    schedule 04.03.2017


Ответы (1)


Не определяйте первичный ключ в своей временной таблице. Ограничение первичного ключа обеспечивает уникальность. Вместо этого создайте кластеризованный индекс. Вы по-прежнему получите выигрыш в производительности запроса, но без ошибки повторяющихся данных.

Более чем вероятно, что генерируются повторяющиеся строки, поэтому следите за повторяющимися данными в выводе.

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

person Wes H    schedule 06.03.2017
comment
Вывод должен быть уникальным, поэтому я использую ПК. Хотя по какой-то причине в моем тестовом наборе данных все еще могут быть дубликаты данных, но если будут какие-либо дубликаты, этот SP также не должен нормально работать в SSMS. Как ни странно, только в SSRS этот SP выдает эту ошибку для тех же параметров и того же набора тестовых данных, которые отлично работают в SSMS. - person Anuj Sethi; 07.03.2017
comment
Временно удалите первичный ключ, чтобы увидеть, какие данные дублируются. Это первый шаг в определении того, как вы получаете дубликаты и что вам нужно сделать, чтобы решить эту проблему. - person Wes H; 07.03.2017