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
类以某种方式诱导的外部事务?

A
SqlCommand
不会生成自动事务

存储过程事务是否具有控制权取决于在执行SQLCommand时是否已经存在打开的事务


如果没有打开的事务,则存储过程中的
BEGIN TRANS..COMMIT TRANS
控制该事务。

要从.net生成事务,可以使用command.transaction=transaction;或者使用事务范围。这不是一个答案,而是在asnwer上的一条评论,特别是在“SqlCommand不会生成自动事务”这一行上,它不是为了您而发布的,而是为了OP和任何其他寻求SqlCommand和事务控制知识的人。谢谢。。。。。。。。。。。。。。。