J'ai deux serveurs SQL liés et j'essaie d'émettre une mise à jour sur l'autre serveur, mais je reçois une erreur "Statement (s) n'a pas pu être préparé.", Suivi par "Doit déclarer le variable scalaire « @Shipper_Nbr » »Mettre à jour le serveur SQL lié avec les paramètres
la syntaxe j'utilise est:
update DBSERVER.DBNAME.DBO.TABLE set Field = @Value WHERE ID = @id
Quelle est la bonne façon de le faire?
MISE À JOUR:
J'ai essayé d'utiliser une procédure stockée et obtenir le même résultat. Aussi, j'ai remarqué des informations supplémentaires. La syntaxe vérifie, je reçois seulement l'erreur quand j'essaye de sauver la procédure stockée. En outre, j'ai remarqué que l'erreur indique également "Fournisseur OLE DB" SQLNCLI "pour le serveur lié" WARSQLVS01 "a renvoyé le message" préparation différée n'a pas pu être terminée. "
ACK - je l'ai compris. C'était une ligne séparée où j'essayais de passer le paramètre à partir de l'instruction select OPENQUERY. Désolé pour ça! : - \
C'est une erreur étrange pour obtenir, compte tenu @Shipper_Nbr ne se présente pas dans le code que vous avez présenté. Y en a-t-il d'autres que vous pouvez partager avec nous? –
J'essayais de le garder générique. Voici la déclaration réelle: \t \t MISE À JOUR \t WARSQLVS01.ISS3_AND_DHAM_PROD.dbo.ISS_AND_data_Shipments \t \t SET \t \t Arrive_DT = @Actual_DateTime \t \t OÙ \t Shipper_Nbr = @Shipper_Nbr et \t \t \t \t CONTAINER_NAME = @Container_Name – Josh