none
Detecter si Implicit transaction est coché ou non dans les propriété/connexion RRS feed

  • Question

  • Bonjour à tous,

    Je reviens avec une question répondue nombre de fois sur le net, mais non fonctionnelle chez moi.

    Je dois determiner si implicit transaction et xact abort sont sélectionné dans les propriété/connexion de mon sql server.

    ATTENTION : je ne dois pas l'activer manuellement, uniquement regarder si c'est le cas ou non.

    Pour le xact abort, aucun souci je fais un test de type

    IF (@@OPTIONS & 16384) = 16384 
    PRINT 'ON'

    Cela fonctionne!!!

    Comme j'ai lu sur de nombreux sites pour l'implicit transaction

    il faudrait effectuer le même test avec la valeur 2

    IF (@@OPTIONS & 2) = 2 
    PRINT 'ON'

    Mais cela ne fonctionne pas, même après un restart de mon sql server.

    Pourriez-vous m'éclairer?

    lundi 30 juillet 2012 12:37

Toutes les réponses

  • Bonjour,

    "Ne fonctionne pas" c'est-à-dire ? Par exemple :

    select @@options & 2
    set IMPLICIT_TRANSACTIONS on
    select @@options & 2
    set IMPLICIT_TRANSACTIONS off
    select @@options & 2
    fonctionne correctement.

    Je vois :

    "The SQL Server Native Client OLE DB Provider for SQL Server and the SQL Server Native Client ODBC driver automatically set IMPLICIT_TRANSACTIONS to OFF when connecting. SET IMPLICIT_TRANSACTIONS defaults to OFF for connections with the SQLClient managed provider, and for SOAP requests received through HTTP endpoints." (tiré de http://msdn.microsoft.com/en-us/library/ms187807.aspx )

    Depuis quel contexte lisez vous ces valeurs ? Si depuis SqlClient par exemple cela expliquerait que cela retourne toujours 0 ?

    Egalement http://msdn.microsoft.com/en-us/library/ms176031(v=sql.100).aspx semble indiquer que ce n'est valable que pour les applications DBLIB ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    lundi 30 juillet 2012 13:57
  • c'est a dire que j'ai toujours la même valeur si je coche ou decoche l'implicit transaction, contrairement à xact_abort.

    en fait je suis en train d'ajouter des informations à un petit module qui sert à vérifier la configuration chez des clients avant l'installation d'applications.

    Pour ce fait, je ne peux en aucun cas effectuer un set implicit_transaction, ni même créer une sp , je dois uniquement consulter l'info

    Le module est crée en vb.net duquel j'envoie des requêtes afin d'obtenir des informations sur sa config.

    Actuellement je n'ai  tester que  via le sql manager.

    merci pour ton aide

    mardi 31 juillet 2012 07:17
  • vb.net donc à priori la doc s'applique : c'est basculé à OFF par SqlClient donc on le voit toujours inactif et donc si le programme utilise également SqlClient, son réglage n'aurait aucune importance.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mardi 31 juillet 2012 08:16
  • Excuse moi, je ne comprend pas ta réponse.

    Tu veux dire que si implicit avait été basculé avec un set implicit, je verrais la modification, mais pas dans le cas d'une modification via les propriété ? C'est bien cela?

    Pourrais-tu être plus precis s 'il te plait, merci ;-)

    mardi 31 juillet 2012 09:01
  • J'ai effectué de nouveaux testes

    Lorsque j'active l'implicit_transaction avec un set  implicit_transaction on

    Mon test @@OPPTIONS & 2 fonctionne. par contre aucun changement au sein de mes propriété/connection.

    Y aurait-il une autre possibilité? ou via la registry pour detecter ce paramètre.

    J'avoue que je sèche ;-)

    mardi 31 juillet 2012 11:10
  • Ce que je veux dire est que l'extrait de doc que je donne semble dire que cette option est mise à OFF par défaut quand le fournisseur natif OleDb, Odbc, SqlClient, Service web ouvre une connexion...

    Donc pour moi si on ouvre une connection SqlClient, et qu'on lit la valeur de l'option, on la verra donc toujours OFF même si elle est ON sur le serveur car l'ouverture de la connexion la mets sur OFF (une trace SQL Server permettrait sans doute de le vérifier).

    Du coup ce réglage ne doit avoir aucune importance pour une appli basée sur SqlClient et la valeur que tu vois est sans doute correcte si 0 et récupérée via SqlClient (car l'ouverture de la connexion "force" ce réglage à OFF de toute façon).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Proposé comme réponse Papy Normand vendredi 10 août 2012 14:22
    mardi 31 juillet 2012 15:11