SQL ť Ǵ ۰ ϴٴ ޽ ɴϴ.

   
   ȸ 1552   õ 0    

쪽팔리면 질문하지 맙시다. 소중한 답변 댓글을 삭제하는건 부끄러운 일 입니다 

아래와 같이 에러 메시지가 나오면서 서버로 데이터가 올라가지 않습니다.

처음에는 잘 올라가다가 나중에 저러고 있는데

쿼리를 날리는 프로그램을 재시작 하면 또 잘 올라가고 일정 시간(횟수)가 지나면 다시 재발합니다.


======= 에러 메세지 ==================

SQL Server에 연결을 설정하는 중에 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 

서버를 찾을 수 없거나 액세스할 수 없습니다. 

인스턴스 이름이 올바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오.

(provider: TCP Provider, error: 0 - 큐 공간 또는 버퍼가 부족하여 소켓에서 해당 작업을 진행하지 못했습니다.)

=====================================


구글링을 해봐도 원인을 모르겠네요. SQL쪽으로 커넥션을 오래열고 있어서 그렇다는 글도 있던데

아래 코드처럼 쿼리를 날릴 때 마다 함수를 호출하여 켜넥션 하고 쿼리 날리고 연결을 끊어주고 있습니다.

무슨 문제가 있을까요?


       public bool WriteDB(string query, bool bReadUncommitted, out string errorMsg)
       {
           bool ret = false;
           errorMsg = "";
           SqlConnection connection = null;
           string connectString = getConnectionString();
           using (connection = new SqlConnection(connectString))
           {
               try
               {
                   connection.Open();
                   SqlTransaction sqlTran;
                   if (bReadUncommitted)
                       sqlTran = connection.BeginTransaction(IsolationLevel.ReadUncommitted);
                   else
                       sqlTran = connection.BeginTransaction();
                   SqlCommand command = connection.CreateCommand();
                   command.Transaction = sqlTran;
                   command.CommandText = query;
                   command.ExecuteNonQuery();
                   try
                   {
                       sqlTran.Commit();
                       ret = true;
                   }
                   catch (Exception)
                   {
                       try
                       {
                           sqlTran.Rollback();
                       }
                       catch (Exception ex)
                       {
                           errorMsg = ex.Message;
                       }
                   }
               }
               catch (Exception ex)
               {
                   errorMsg = ex.Message;
               }
               finally
               {
                   connection.Close();
               }
           }
           return ret;
       }

...
ª ϼ ϰ.
04-03
ڹٴ ׳ ϴ.

connection = new SqlConnection(connectString)
ü ÷Ϳؼ ȵǴ ϼ ־Դϴ.
 finally
{
    connection.Close();
    connection = null; <- ̰ ߰ؼ óִ° ?
}


Ǹ ȵǸ Ф

̿ܿ new ÷Ϳ ʴ ִ
ѶѶ 캸¼ۿ ڳ׿...
SqlTransaction sqlTran;
SqlCommand command;
..
     
04-03
亯 մϴ.  Ͽ ׽Ʈ غڽϴ
ܹl 04-03
ڹó µ, c# ڵ׿.
MSϱ.. Ϸ ýϴ.

ڵ忡 ߽߰ϴ. Ʒ ϰ ϰڽϴ:

- ҽ (Resource Leak):
    SqlConnection SqlTransaction using Ǿ, connection.Close() ȣDZ ޸𸮿 ʽϴ.
    ̷ ҽ ߻ ֽϴ.
    ذ : using connection sqlTran ϰ, connection.Close() ȣϿ ҽ ϼ.

- Ʈ ó
    Ʈ ó κп ø try-catch ֽϴ.
    sqlTran.Commit() ϸ ret true , Commit() ϸ Rollback() õմϴ.
    Rollback() , errorMsg ޽ ϰ ret false ˴ϴ.
    ذ : Rollback() ÿ ret false ϰ, errorMsg ϼ.

public bool WriteDB(string query, bool bReadUncommitted, out string errorMsg)
{
    bool ret = false;
    errorMsg = "";
    string connectString = getConnectionString();

    using (SqlConnection connection = new SqlConnection(connectString))
    {
        try
        {
            connection.Open();
            SqlTransaction sqlTran;

            if (bReadUncommitted)
                sqlTran = connection.BeginTransaction(IsolationLevel.ReadUncommitted);
            else
                sqlTran = connection.BeginTransaction();

            SqlCommand command = connection.CreateCommand();
            command.Transaction = sqlTran;
            command.CommandText = query;

            try
            {
                command.ExecuteNonQuery();
                sqlTran.Commit();
                ret = true;
            }
            catch (Exception ex)
            {
                sqlTran.Rollback();
                errorMsg = ex.Message;
            }
        }
        catch (Exception ex)
        {
            errorMsg = ex.Message;
        }
    }

    return ret;
}

ڵ ҽ ϰ Ʈ ó ϸ, ϰ óմϴ
     
04-03
亯 մϴ.  Ͽ ׽Ʈ غڽϴ
2 04-03
SqlTransaction SqlCommand Ŀ Disposeմϴ.  켱 using ڵԴϴ

        public bool WriteDB(string query, bool bReadUncommitted, out string errorMsg)
        {
            bool ret = false;
            errorMsg = "";
            SqlConnection connection = null;
            string connectString = getConnectionString();
            using (connection = new SqlConnection(connectString))
            {
                try
                {

                    connection.Open();

                    using (SqlTransaction sqlTran = bReadUncommitted ? connection.BeginTransaction(IsolationLevel.ReadUncommitted) : connection.BeginTransaction())
                    {

                        using (SqlCommand command = connection.CreateCommand())
                        {

                            command.Transaction = sqlTran;
                            command.CommandText = query;
                            command.ExecuteNonQuery();

                            try
                            {
                                sqlTran.Commit();
                                ret = true;
                            }
                            catch (Exception)
                            {
                                try
                                {
                                    sqlTran.Rollback();
                                }
                                catch (Exception ex)
                                {
                                    errorMsg = ex.Message;
                                }
                            }

                        }

                    }
                }
                catch (Exception ex)
                {
                    errorMsg = ex.Message;
                }
                finally
                {
                    connection.Close();
                }
            }
            return ret;
        }
     
04-03
亯 մϴ.
 using (SqlTransaction sqlTran = bReadUncommitted ? connection.BeginTransaction(
ʴ  (Ŀ using   connection ) ֳ׿ ^^
ǿ 04-03
try catch finally Ͽ close ؾ մϴ. ť ٰ ϴ ̾߱ ⸸ ϰ() ó̾ȵǾ Ѱġ Ϲ ޼ Դϴ.


QnA
Page 106/5682
2015-12   1489693   ް
2014-05   4953185   1
2022-09   1167   ״
2022-04   1167   osthek83
2023-07   1167  
01-30   1167   DOSS
2022-03   1167   LINKINPARK
03-16   1168  
2022-01   1168  
03-17   1168   ̴
08-09   1168  
2022-08   1168   ȣڰ
2022-07   1168   âõ
03-29   1168   Rich
2023-03   1168  
02-10   1169   ̼
2022-06   1169   ҽ
2022-09   1169   ̴
2023-11   1169   Ȧ0o0
06-04   1169   ޻
03-03   1169  
2023-06   1169