CORRECTIF : message d’erreur lorsque l’Agent de Distribution essaie d’appliquer la capture instantanée à l’abonné dans SQL Server 2005 : « doit déclarer la variable scalaire « @Variable » »

N° de bogue : 50001158 (correctif SQL)

Symptômes

Envisagez le scénario suivant. Vous configurez une réplication transactionnelle dans Microsoft SQL Server 2005. Créer la capture instantanée initiale avec succès sur l’éditeur. Dans ce scénario, lorsque l’Agent de Distribution essaie d’appliquer la capture instantanée à l’abonné, le message d’erreur suivant s’affiche :
Erreur : 137, gravité : 15, état : 2

Devez déclarer la variable scalaire « @Variable ».
Ce problème se produit si les conditions suivantes sont remplies :
  • La réplication transactionnelle contient un article créé qui est basé sur une table qui possède des colonnes calculées.
  • La colonne de clé primaire est triée après que les colonnes calculées sont triées.
  • À partir de la table syscolumns , vous pouvez voir que l’ID de colonne de la colonne de clé primaire est supérieure à la colonne ID des colonnes calculées.
  • La publication utilise le traitement simultané de capture instantanée.

Cause

L’Agent de Distribution crée une procédure stockée pour insérer des données sur l’abonné. Toutefois, la procédure stockée possède les numéros de paramètre incorrect.

Résolution

Informations de mise à jour cumulative

Le correctif de ce problème a été publié dans les 2 mise à jour Cumulative. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2005 Service Pack 2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
936305 Cumulative mise à jour 2 pour SQL Server 2005 Service Pack 2
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2005 version du correctif. Microsoft vous recommande l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
937137 le SQL Server 2005 versions publiées après la publication de SQL Server 2005 Service Pack 2
Les correctifs Microsoft SQL Server 2005 sont créés pour les packs de service spécifiques de SQL Server. Vous devez appliquer un correctif SQL Server 2005 Service Pack 2 à une installation de SQL Server 2005 Service Pack 2. Par défaut, tout correctif qui est fourni dans un service pack de SQL Server est inclus dans le prochain service pack de SQL Server.

Solution de contournement

Pour contourner ce problème, appliquez l’une des méthodes suivantes :
  • Lorsque vous créez la table sous-jacente de cet article, assurez-vous que la colonne de clé primaire est triée avant les colonnes calculées sont triées.
  • Utilisez le traitement natif de capture instantanée ou traitement de capture instantanée de base de données au lieu de traitement simultané de capture instantanée.

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations

Par exemple, ce problème se produit lorsque vous utilisez l’instruction suivante pour créer la table sous-jacente de l’article :
CREATE TABLE [dbo].[test]([col1] [char](10) NOT NULL,
[col2] [char](10) NOT NULL,
[col_1_2] AS ([col1] + [col2]),
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION PRIMARY KEY NOT NULL
)

Propriétés

ID d'article : 936534 - Dernière mise à jour : 17 janv. 2017 - Révision : 1

Commentaires