หน้า 1 จากทั้งหมด 1

.Net c# + Oracle วิธ๊ใช้ connection string

โพสต์แล้ว: 04/07/2019 11:30 am
โดย jataz2
แบบที่ 1 ทั่วๆไป

โค้ด: เลือกทั้งหมด

<add name="T_CONN" connectionString="DATA SOURCE=10.0.0.1:1243/CUSTOMERDB;PASSWORD=password;PERSIST SECURITY INFO=True;USER ID=CUST;Enlist=True;" />
แบบที่ 2 เพิ่ม option เข้าไป 3 ตัว Validate Connection ,Connection Lifetime และ Connection Timeout

โค้ด: เลือกทั้งหมด

<add name="T_CONN" connectionString="DATA SOURCE=10.0.0.1:1243/CUSTOMERDB;PASSWORD=password;PERSIST SECURITY INFO=True;USER ID=CUST;Enlist=True; Validate Connection=true;Connection Lifetime=1800;Connection Timeout=300;" />
ผมแนะนำให้ใช้แบบที่ 2 ครับ เพิ่มเวลา timeout จาก default 15 วินาที เป็น 300 วินาที มีการ validate connection ก่อน และระบุเวลา lifetime เป็น 1800 วินาที คิวรี หรือ command update insert หรือ call storeproc ทั่วไปไม่น่าจะนานเกิน 300 วิ ครับ ป้องกันปัญหาก่อนที่มันจะเกิด

อ่านเพิ่มเติมได้ที่นี่ครับ

https://www.codeproject.com/Articles/17 ... t-a-Glance

https://www.connectionstrings.com/oracl ... t-odp-net/

Re: .Net c# + Oracle วิธ๊ใช้ connection string

โพสต์แล้ว: 04/07/2019 12:54 pm
โดย Sirayu
ขอบคุณเนื้อหาดีๆ มากครับ

Re: .Net c# + Oracle วิธ๊ใช้ connection string

โพสต์แล้ว: 05/07/2019 9:45 am
โดย jataz2
แบบที่1 ถ้าเราไม่ระบุ IsolationLevel ค่า default ของมันคือ Serializable

โค้ด: เลือกทั้งหมด

 	using (TransactionScope txn = new TransactionScope())
            { 
                for (int i=0;i< 1000; i++)
                {
                      string cmd = "insert into tba(id,count) values(1,7)";

                      ExecuteNoneQuery(cmd );
                }     
               txn.Complete();
            }
แบบที่ 2 ใส่ transaction option เพิ่มเข้าไป แบบนี้จะดูดีกว่า ลดวามเสี่ยง deadlock และ timeout

โค้ด: เลือกทั้งหมด

            var txOptions = new System.Transactions.TransactionOptions();
            txOptions.IsolationLevel = IsolationLevel.ReadCommitted;
            using (TransactionScope txn = new TransactionScope(TransactionScopeOption.Required, txOptions))
            { 
                for (int i=0;i< 1000; i++)
                {
                      string cmd = "insert into tba(id,count) values(1,7)";

                      ExecuteNoneQuery(cmd );
                }     
               txn.Complete();
            }