C# SQLServer2008中的事务问题

C# SQLServer2008中的事务问题,c#,tsql,sql-server-2008,ado.net,transactions,C#,Tsql,Sql Server 2008,Ado.net,Transactions,我正在使用SQLServer2008企业版。使用ADO.Net+C++.NET3.5+ASP.Net作为客户端访问数据库。当我访问SQLServer2008表时,我总是从我的C+ADO.Net代码中调用存储过程 我的问题是,如果我没有任何事务控制,我的意思是从客户端C+ADO.Net代码开始/结束事务,我也没有任何事务控制,我的意思是在sql存储过程代码中开始/结束事务。那么我的问题是,每个Insert/Delete/Update/Select语句都将充当一个事务?对吗?例如,在以下存储过程中,

我正在使用SQLServer2008企业版。使用ADO.Net+C++.NET3.5+ASP.Net作为客户端访问数据库。当我访问SQLServer2008表时,我总是从我的C+ADO.Net代码中调用存储过程

我的问题是,如果我没有任何事务控制,我的意思是从客户端C+ADO.Net代码开始/结束事务,我也没有任何事务控制,我的意思是在sql存储过程代码中开始/结束事务。那么我的问题是,每个Insert/Delete/Update/Select语句都将充当一个事务?对吗?例如,在以下存储过程中,删除/插入/选择将作为3个单一事务处理

create PROCEDURE [dbo].[FooProc]    
(  
 @Param1 int 
 ,@Param2 int  
 ,@Param3 int  
)    
AS    

DELETE FooTable WHERE  Param1 = @Param1     

INSERT INTO FooTable    
 (  
 Param1  
 ,Param2  
 ,Param3  
  )    
 VALUES    
 (  
 @Param1  
 ,@Param2  
 ,@Param3  
  )    

DECLARE @ID bigint    
 SET @ID = ISNULL(@@Identity,-1)    
 IF @ID > 0    
 BEGIN    
      SELECT IdentityStr FROM FooTable WHERE ID = @ID 
 END 

如果不处理事务,则每条语句都是独立的,可能会干扰同时运行存储过程的其他用户。

如果不处理事务,则每条语句都是独立的,可能会干扰同时运行存储过程的其他用户

那么我的问题是,每一个 Insert/Delete/Update/Select语句 是否将作为单个事务处理

是的,如果没有显式的事务控制,每个SQL语句将被包装在自己的事务中。单个语句保证作为一个整体执行或作为一个整体失败

单个语句将在当前:normally read committed下运行。因此,它不会从其他语句读取未提交的更改,但可能会遭受不可重复读取或幻象值的影响

那么我的问题是,每一个 Insert/Delete/Update/Select语句 是否将作为单个事务处理

是的,如果没有显式的事务控制,每个SQL语句将被包装在自己的事务中。单个语句保证作为一个整体执行或作为一个整体失败


单个语句将在当前:normally read committed下运行。因此,它不会从其他语句中读取未提交的更改,但可能会遭受不可重复读取或幻象值的影响。

谢谢您,Andomar!问题回答了!谢谢你,安多玛!问题回答了!