none
update avec parametres impossible sur un serveur lié en vb.net RRS feed

  • Question

  • Bonjour,

    J'ai créé un serveur lié avec SSMS SQL Server 2008 R2. Toutes mes requêtes fonctionnent bien et je n'ai aucun soucis. Par contre lorsque j'essaie d'exécuter les mêmes requêtes en vb.net, tout se passe bien sauf pour l'update!

    Dim cnx As New SqlClient.SqlConnection
    cnx.ConnectionString = "server=MYLOCALSERVER;Trusted_Connection=yes;MultipleActiveResultSets=True"
    cnx.Open()
    Dim cmd As SqlCommand
    cmd = cnx.CreateCommand
    cmd.CommandText = "UPDATE [MY.FOREIGN.SERVER].[MYDB].[dbo].[MYTABLE] SET [Design]=@Design WHERE Ref = @Ref"
    cmd.Parameters.AddWithValue("@Ref", "xyz")
    cmd.Parameters.AddWithValue("@Design", "Foobar")
    cmd.ExecuteNonQuery()
    cmd.Dispose()


    Lorsque j’exécute le code ci-dessus, j’obtiens un timeout error même si j'augmente à 4 minutes

    Si je supprime les paramètres et que j'insère dans ma chaine les valeurs comme ci-dessous, la requete fonctionne instantanément:

    cmd.CommandText = "UPDATE [MY.FOREIGN.SERVER].[MYDB].[dbo].[MYTABLE] SET [Design]='Foobar' WHERE Ref = 'xyz'"

    Je n'arrive pas à comprendre ce qui se passe. J'ai cherché un peu partout sur le net mais je ne trouve aucun problème similaire ....

    Merci pour votre aide


    mardi 29 septembre 2015 13:41

Réponses

  • Bonjour,

    A part qu'il manque le cnx.Open() dans votre code (mais c'est un mauvais Copier-Coller non ?), je ne vois pas d'erreur.

    (et faudrait rajouter le cnx.Dispose() mais plus globalement, faudrait utiliser using)


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone


    mercredi 30 septembre 2015 05:20

Toutes les réponses

  • Je regarderai côté plan d'exécution sur les 2 serveurs. En essayant de vider le cache de cette requête pour voir si ça change quelque chose.
    mardi 29 septembre 2015 14:48
  • Bonjour,

    A part qu'il manque le cnx.Open() dans votre code (mais c'est un mauvais Copier-Coller non ?), je ne vois pas d'erreur.

    (et faudrait rajouter le cnx.Dispose() mais plus globalement, faudrait utiliser using)


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone


    mercredi 30 septembre 2015 05:20
  • Oui effectivement c'est un oubli dans le copier/coller.

    Je fais aussi le close mais à la fermeture de l'application et je note pour le using ... pas l'habitude de l'utiliser.

    Ces modifs ne résolvent malheureusement pas le problème.

    mercredi 30 septembre 2015 13:32