C# StoredProcedure类型的SqlCommand是否提供外部事务?
我有以下调用存储过程的代码:C# StoredProcedure类型的SqlCommand是否提供外部事务?,c#,.net,sql-server,transactions,sqlcommand,C#,.net,Sql Server,Transactions,Sqlcommand,我有以下调用存储过程的代码: //SqlConnection connection = ...; using (SqlCommand command = connection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.CommandText = "usp_MyProc"; command.ExecuteNonQuery(); } 存储过程如
//SqlConnection connection = ...;
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "usp_MyProc";
command.ExecuteNonQuery();
}
存储过程如下所示:
CREATE PROCEDURE [dbo].[usp_MyProc]
AS
BEGIN
BEGIN TRAN
-- SOME STATEMENTS IN HERE
COMMIT TRAN
RETURN 0
END
事务是否由那些
BEGIN-TRAN
和COMMIT-TRAN
语句控制,或者是否存在由SqlCommand
类以某种方式诱导的外部事务?ASqlCommand
不会生成自动事务
存储过程事务是否具有控制权取决于在执行SQLCommand时是否已经存在打开的事务
如果没有打开的事务,则存储过程中的
BEGIN TRANS..COMMIT TRANS
控制该事务。要从.net生成事务,可以使用command.transaction=transaction;或者使用事务范围。这不是一个答案,而是在asnwer上的一条评论,特别是在“SqlCommand不会生成自动事务”这一行上,它不是为了您而发布的,而是为了OP和任何其他寻求SqlCommand和事务控制知识的人。谢谢。。。。。。。。。。。。。。。