我有一個函數,我已經調用了一個存儲過程來創建一個新的數據庫,並將一個現有的數據庫恢復到該新創建的數據庫中。它工作正常,沒有事務範圍,但在事務範圍內,它給出錯誤,如在事務範圍內創建和恢復數據庫的問題?
Cannot perform a backup or restore operation within a transaction.
BACKUP DATABASE is terminating abnormally.
Cannot perform a backup or restore operation within a transaction.
RESTORE DATABASE is terminating abnormally
示例代碼:
using (Transactions.TransactionScope scope = new Transactions.TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0)))
{
if (flag == "Yes")
{
SqlCommand cmddb = new SqlCommand("crt_crm_db_details", con);
cmddb.CommandType = CommandType.StoredProcedure;
cmddb.CommandTimeout = 0;
cmddb.Parameters.Add("@custname", SqlDbType.NVarChar).Value = ccode;
cmddb.Parameters.Add("@blank_dbname", SqlDbType.NVarChar).Value = _blankdbCrm;
cmddb.Parameters.Add("@blank_bakpath", SqlDbType.NVarChar).Value = bakRestorePath;
cmddb.Parameters.Add("@blank_mdfpath", SqlDbType.NVarChar).Value = mdfRestorePath;
cmddb.Parameters.Add("@blank_ldfpath", SqlDbType.NVarChar).Value = ldfRestorePath;
cmddb.Parameters.Add("@usercnt", SqlDbType.NVarChar).Value = userCountdb;
SqlParameter Typedb = new SqlParameter("@errorid", SqlDbType.NVarChar);
Typedb.Direction = ParameterDirection.Output;
Typedb.Value = null;
Typedb.Size = 50;
cmddb.Parameters.Add(Typedb);
try
{
con.Open();
cmddb.ExecuteNonQuery();
}
catch (Exception ex)
{
VWLogger.LogMessage("Exception in crt_crm_db_details:", TraceEventType.Critical);
VWLogger.LogMessage(ex, TraceEventType.Critical);
return ex.Message;
throw new CustomSoapException(CustomSoapException.ExceptionCode.AuthenticationException, ex.Message);
}
con.Close();
}
scope.Complete();
return "Success";
}
任何建議?
我有一些事務範圍內的10個方法..無法在事務範圍外單獨執行此tsql .. – bala3569
@ bala3569那麼你不能執行它在所有。這個操作***不能在一個事務內完成...... –
我已經嘗試過嵌套事務並且使用TransactionScopeOption.Suppress來處理這個tsql ..它工作正常,謝謝..有另外一個問題嗎? – bala3569