Sql server 在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.Or
Sql server 在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.Or,sql-server,transactions,entity-framework-6,Sql Server,Transactions,Entity Framework 6,在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.OrderManagementController.OrderPlacement(D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\
在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.OrderManagementController.OrderPlacement(D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\u Phase\Source Code\OLMP\Working\OLMP.root\OLMP\OLMPServices\Controller\OrderManagementController.cs:242)]-System.Data.SqlClient.SqlException(0x80131904):执行后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一个计数=1,当前计数=0。执行后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一个计数=1,当前计数=0。将数据插入TxnOrderAddressDetails 8152行时出错:49字符串或二进制ry数据将被截断。>proc_PurchaseOrder_在OLMPBusiness.OrderManagementBusinessComponent.CreatePurchaseOrder(字符串authToken)创建在D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\u Phase\Source Code\OLMP\Working\OLMP.root\OLMP\OLMPBusiness\OrderManagementBusinessComponent.cs中:第198行atOLMPServices.Controller.OrderManagementController.OrderPlacement()在D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\u Phase\Source Code\OLMP\Working\OLMP.root\OLMP\OLMPServices\Controller\OrderManagementController.cs:line 232客户端连接ID:9bf7d1ec-ea49-49b6-a8e0-bc53d486d99d错误号:266,状态:2,类别:16您的sp被另一个事务包围
CREATE PROCEDURE [dbo].[proc_PurchaseOrder_Create](@CustomerID INT, @CustomerOrderID INT OUTPUT)
AS
SET NOCOUNT ON;
--------------------------------
DECLARE @Return_Message VARCHAR(1024)
DECLARE @ErrorCode INT
DECLARE @ErrorStep VARCHAR(200)
DECLARE @UserID INT
--------------------------------
DECLARE @CustomerCartID INT,@PONumber VARCHAR(255), @CartTotalAmount NUMERIC
BEGIN TRY
BEGIN TRAN
-----------------------------------------------------------------------------
SELECT @ErrorCode = @@ERROR
SET NOCOUNT ON;
IF NOT EXISTS(SELECT CustomerCartID FROM TxnCustomerCart WHERE CustomerID = @CustomerID)
BEGIN
SET @Return_Message= 'No Cart item is available'
SET @ErrorCode = 1
END
ELSE
BEGIN
-----------------------------------------------------------------------------
SELECT @UserID = ISNULL(UserID,0) FROM TxnCustomers WHERE CustomerID = @CustomerID
-----------------------------------------------------------------------------
SELECT @CartTotalAmount = CartTotalAmount, @CustomerCartID = CustomerCartID FROM TxnCustomerCart WHERE @CustomerID = CustomerID
SELECT @ErrorStep = 'Error on inserting data into TxnCustomerOrders';
INSERT INTO TxnCustomerOrders(CustomerID,OrderDate,OrderStatus,Ramarks,PaymentCategoryCode,CreatedBy,CreatedDatetime)
VALUES(@CustomerID,GETDATE(),'PRTRCVD','','Wallet',@UserID,GETDATE())
SET @CustomerOrderID = SCOPE_IDENTITY();
SELECT @ErrorStep = 'Error on generating PONumber';
SET @PONumber =dbo.fun_getPONumber(@CustomerID, @CustomerOrderID)
SELECT @ErrorStep = 'Error on inserting data into TxnPurchaseOrder';
INSERT INTO TxnPurchaseOrder (CustomerOrderID, PONumber, PODate, POAmount, PODocID, PODocPath, CreatedBy, CreatedDate)
VALUES (@CustomerOrderID, @PONumber, GETDATE(), @CartTotalAmount, REPLACE(@PONumber, '/' , '-'), REPLACE(@PONumber, '/' , '-') + '.pdf', @UserID, GETDATE())
SELECT @ErrorCode = 0, @Return_Message = 'Purchase order successfully created'
END
SET NOCOUNT OFF;
COMMIT TRAN
RETURN @ErrorCode -- =0 if success, <>0 if failure
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK
SELECT @ErrorCode = ERROR_NUMBER()
, @Return_Message = @ErrorStep + ' '
+ cast(ERROR_NUMBER() as varchar(20)) + ' line: '
+ cast(ERROR_LINE() as varchar(20)) + ' '
+ ERROR_MESSAGE() + ' > '
+ ERROR_PROCEDURE()
RETURN @ErrorCode -- =0 if success, <>0 if failure
END CATCH
CREATE PROCEDURE [dbo].[proc_PurchaseOrder_Create]
AS
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
print 'before'
select * from ##global_tmp_table; --> fatal error here
print 'after'
COMMIT TRAN
END TRY
BEGIN CATCH
print 'catch'
IF @@TRANCOUNT > 0 ROLLBACK
END CATCH
ALTER PROCEDURE [dbo].[proc_PurchaseOrder_Create]
AS
SET NOCOUNT ON;
SET XACT_ABORT ON; --> the only change
BEGIN TRY
BEGIN TRAN
print 'before'
select * from ##global_tmp_table;
print 'after'
COMMIT TRAN
END TRY
BEGIN CATCH
print 'catch'
IF @@TRANCOUNT > 0 ROLLBACK
END CATCH