Question Comment définissez-vous autocommit dans une session SQL Server?


Comment définissez-vous autocommit dans une session SQL Server?


53
2017-07-07 03:31


origine


Réponses:


Vous pouvez activer la validation automatique en définissant implicit_transactions sur OFF:

SET IMPLICIT_TRANSACTIONS OFF

Lorsque le paramètre est activé, il revient au mode de transaction implicite. En mode de transaction implicite, chaque modification que vous effectuez démarre une transaction que vous devez valider manuellement.

Peut-être qu'un exemple est plus clair. Cela va écrire une modification à la base de données:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
COMMIT TRANSACTION

Cela n'écrira pas de modification dans la base de données:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

L'exemple suivant va mettre à jour une ligne, puis se plaindre de l'absence de transaction à valider:

SET IMPLICIT_TRANSACTIONS OFF
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

Comme Mitch Wheat l'a dit, autocommit est la valeur par défaut pour Sql Server 2000 et les versions ultérieures.


71
2017-07-07 07:43



Je voulais un moyen plus permanent et plus rapide. Parce que j'ai tendance à oublier d'ajouter des lignes supplémentaires avant d'écrire mes requêtes Update / Insert réelles.

Je l'ai fait en vérifiant SET IMPLICIT_TRANSACTIONS case à cocher des options. Pour accéder aux options, sélectionnez Outils> Options> Exécution de la requête> SQL Server> ANSI dans votre Microsoft SQL Server Management Studio.

Assurez-vous juste d'exécuter commit ou rollback après avoir terminé d'exécuter vos requêtes. Sinon, la table que vous auriez exécutée sera verrouillée pour les autres.


44
2018-01-05 19:53



Autocommit est le mode de gestion des transactions par défaut de SQL Server. (SQL 2000 et suivants)

Ref: Transactions à participation automatique


6
2017-07-07 03:38



Avec SQLServer 2005 Express, j'ai trouvé que même avec désactivation automatique, les insertions dans une table Db ont été validées sans que je lance une commande de validation à partir de la session Management Studio. La seule différence était, quand autocommit était désactivé, je pouvais annuler toutes les insertions; avec *autocommit sur, Je ne pouvais pas.


2
2018-02-26 04:56