0

J'ai deux SP dans SQL Server. SP1 appelle SP2 répétitivement dans une boucle avec différents paramètres et continue de stocker la sortie de SP2 dans une table temporaire. SP2 qui est appelé de façon répétitive par SP1 a certaines tables temporaires avec des clés primaires "non nommées".L'appel répétitif de SP dans un autre SP provoque des problèmes de nom PK en double dans la table temporaire dans le SP appelé lorsqu'il est utilisé dans SSRS

Je sais que les clés primaires nommées sur les tables temporaires provoquent des problèmes car elles ne sont parfois pas supprimées même si la table temporaire est supprimée.

Dans SP2, au tout début, je vérifie et supprime toutes les tables temporaires dans SP2 si elles existent.

Cela semble fonctionner parfaitement dans SSMS, mais lorsque j'utilise SP1 dans SSRS, plusieurs fois il renvoie une erreur dans SP2 pour violation de nom PK.

Impossible d'insérer une clé dupliquée dans l'objet #tempTable.

Existe-t-il une solution de contournement pour ce problème? Ne pas définir une clé primaire sur votre table temporaire.

+0

Si vous souhaitez insérer des valeurs en double dans la table temporaire, pourquoi définissez-vous cette colonne comme PK? Il semble que la réponse ici est d'éviter cette désignation lorsque la table temporaire est créée, mais il serait utile de donner un exemple de la structure de la table temporaire et du code de bouclage. –

Répondre

0

La contrainte de clé primaire renforce l'unicité. Au lieu de cela, créez un index cluster. Vous obtiendrez toujours les avantages de performance de la requête, mais sans l'erreur de données en double.

Il est plus que probable que des lignes dupliquées sont générées, alors surveillez les données dupliquées dans votre sortie. Une fois le problème de données en double résolu, vous pouvez rétablir la clé primaire afin d'éviter qu'une erreur ne se reproduise sur les données en double ou la conserver en tant qu'index en cluster et espérer que le consommateur du rapport remarque si les données sont être dupliqué à nouveau.

+0

La sortie est supposée être unique, c'est pourquoi j'utilise PK. Bien qu'il puisse toujours y avoir des données en double dans mon jeu de données de test, mais s'il y a des doublons, ce SP ne devrait pas non plus fonctionner correctement dans SSMS. Bizarrement, dans le cas de SSRS, ce SP envoie cette erreur pour les mêmes paramètres et le même jeu de données de test qui s'exécute correctement dans SSMS. –

+0

Supprimez temporairement la clé primaire pour voir quelles données sont en cours de duplication. C'est la première étape pour déterminer comment vous obtenez des doublons et ce que vous devez faire pour le résoudre. –