Tôi nhận được lỗi dưới đây trong khi chèn bản ghi vào cơ sở dữ liệu.Lỗi giao dịch Sql
System.Transactions.TransactionException: The operation is not valid for the state of the transaction. ---> System.TimeoutException: Transaction Timeout
--- End of inner exception stack trace ---
at System.Transactions.TransactionState.EnlistPromotableSinglePhase(InternalTransaction tx, IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Transaction atomicTransaction)
at System.Transactions.Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification)
at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
Thực ra tôi đang chèn dữ liệu vào cơ sở dữ liệu theo phương thức phạm vi giao dịch, mã được mô tả bên dưới.
TransactionOptions tOptions = new TransactionOptions();
tOptions.IsolationLevel = IsolationLevel.ReadCommitted;
tOptions.Timeout = TransactionManager.MaximumTimeout;
using (var transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew, tOptions))
{
}
Có điều gì không chính xác trong tuyên bố ở trên không? Một điều cần lưu ý ở đây là tôi chèn dữ liệu hàng loạt trong ít nhất 10 bảng với nhiều bản ghi và bảng cũng cho phép chèn bản ghi trùng lặp với số lượng lớn, Cú pháp được sử dụng để đạt được điều này được đề cập bên dưới.
CREATE UNIQUE INDEX Index_a ON table1([c1], [c2]) WITH IGNORE_DUP_KEY
Sẽ biết ơn nếu có ai có thể giúp tôi giải quyết vấn đề này.
Bạn đang sử dụng thời gian chờ kết nối nào? –
Hãy thử đặt mã của bạn trong một khối try-catch và kiểm tra ngoại lệ trong trình gỡ lỗi. Tôi đã làm điều này và đôi khi nhận được thêm chi tiết về vấn đề này, giống như một NULL được chèn vào trong một trường không nullable, đó là loại điều. – Melanie
Hoạt động của bạn thành công nếu bạn chạy nó mà không có giao dịch? Nếu vậy, mất bao lâu để hoàn thành mà không có giao dịch? – Nathan