J'ai un code C#/ado.net qui agit différemment avec SQL Server 2000 et SQL Server 2008.Différence de transaction de ADO.Net connexion à SQL Server 2000 et SQL Server 2008
SqlConnection con = new SqlConnection("connecstionstring");
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MySp";
con.Open();
SqlTransaction trans = con.BeginTransaction();
cmd.Transaction = trans;
cmd.ExecuteNonQuery();
trans.Commit();// this step will fail with sql server 2008 but success with 2000
con.Close();
et le code sp comme:
ALTER PROCEDURE MySp
AS
BEGIN
COMMIT --this match the outside 'begin trans' in c# code
do some thing...
BEGIN TRANSACTION -- this match the outside 'commit' in c# code
END
lors de la connexion à SQL Server 2008, le code C# échouera à 'trans.Commit(), et l'exception dit: la transaction a été commis, ne peut pas utiliser à nouveau.
Mais la connexion à SQL Server 2000, il réussira. S'il vous plaît dites-moi pourquoi?