* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window7 32bit , Window10 64bit |
|
[cubrid_rel] 수행 결과 |
|
[도움말]-[버전정보] 확인 |
|
c# |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
쿼리를 실행하는 도중 에러가 발생하여 응용프로그램이 팅겼습니다.
이 현상은 지속적으로 일어나는것이 아니라 계속 켜놓고있다보면 한번씩 나타나는 증상입니다.
20초에 한번씩 쿼리를 지속적으로 돌립니다.
로그는 윈도우 이벤트 로그입니다.
응용 프로그램: OrderNotice.exe
Framework 버전: v4.0.30319
설명: 처리되지 않은 예외로 인해 프로세스가 종료되었습니다.
예외 정보:System.AccessViolationException
스택:
위치: System.Data.OleDb.SessionWrapper.CreateCommand(System.Object ByRef)
위치: System.Data.OleDb.OleDbConnectionInternal.ICommandText()
위치: System.Data.OleDb.OleDbConnection.ICommandText()
위치: System.Data.OleDb.OleDbCommand.PropertiesOnCommand(Boolean)
위치: System.Data.OleDb.OleDbCommand.InitializeCommand(System.Data.CommandBehavior, Boolean)
위치: System.Data.OleDb.OleDbCommand.ExecuteCommand(System.Data.CommandBehavior, System.Object ByRef)
위치: System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(System.Data.CommandBehavior, System.String)
위치: System.Data.OleDb.OleDbCommand.ExecuteReader(System.Data.CommandBehavior)
위치: System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(System.Data.CommandBehavior)
위치: System.Data.Common.DbDataAdapter.FillInternal(System.Data.DataSet, System.Data.DataTable[], Int32, Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)
위치: System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet, Int32, Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)
위치: System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet)
위치: OrderTracker.Shared.DBPoll.GetNewOrdersYN(System.String)
위치: OrderTracker.Pages.FrmHome.timer1_Tick(System.Object, System.EventArgs)
위치: System.Windows.Forms.Timer.OnTick(System.EventArgs)
위치: System.Windows.Forms.Timer+TimerNativeWindow.WndProc(System.Windows.Forms.Message ByRef)
위치: System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)
위치: System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG ByRef)
위치: System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr, Int32, Int32)
위치: System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)
위치: System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)
위치: System.Windows.Forms.Application.Run(System.Windows.Forms.Form)
위치: OrderNotice.Program.Main(System.String[])
----------------------------------------------------함수내용-----------------------------------------------------------
public string[] GetNewOrdersYN(string esntl_cust_id)
{
string[] result = new string[] { "","", "" };
try
{
string SQL = "SELECT MAX(new_order) AS new_order, DECODE(MAX(ISNULL(ORDER_DATE_LAST_TIM)), 0, 'Y', 'N') AS new_job \n";
SQL += ", TO_CHAR(MAX(ORDER_DATE_LAST_TIM), 'YYYY-MM-DD HH24:MI:SS') AS ORDER_DATE_LAST_TIM \n";
SQL += "FROM (SELECT DECODE(COUNT(*), 0, 'N', 'Y') AS new_order, '' AS ORDER_DATE_LAST_TIM \n";
SQL += "FROM artsend \n";
SQL += "WHERE esntl_cust_id = '"+ esntl_cust_id + "' \n";
SQL += "and ORDER_DT BETWEEN(NOW()-(1000 * 60 * 60 * 24)) AND NOW() \n";
SQL += "and order_sta = 'O' \n";
SQL += "UNION all \n";
SQL += "SELECT '', to_char(MAX(chg_date), 'yyyy-mm-dd hh24:mi:ss') AS ORDER_DATE_LAST_TIM \n";
SQL += "FROM artsend \n";
SQL += "WHERE esntl_cust_id = '" + esntl_cust_id + "' \n";
SQL += "and to_char(chg_date, 'yyyy-mm-dd hh24:mi:ss') > '" + Global.last_tm + "') \n";
OleDbDataAdapter ad = new OleDbDataAdapter(SQL, DBConn.conn);
Console.WriteLine(SQL);
DataSet ds = new DataSet();
ad.Fill(ds);
DataTable dt = ds.Tables[0];
if (ds.Tables.Count > 0)
{
foreach(DataRow r in dt.Rows)
{
result[0] = r["new_order"].ToString();
result[1] = r["new_job"].ToString();
result[2] = r["ORDER_DATE_LAST_TIM"].ToString();
Console.WriteLine("new_order : " + result[0]);
Console.WriteLine("new_job : " + result[1]);
Console.WriteLine("last_tm : " + result[2]);
}
return result;
}
else
{
return null;
}
}
catch (Exception ex)
{
return null;
}
}