มาทำ SQL Server Session State กันเถอะ
Posted by ejeepss on ตุลาคม 9th, 2008
อะไรคือ SQL Server Sessionstate? ก่อนที่จะตอบคำถามนี้ได้ ขอพูดภาพรวมก่อนนะครับ การทำงานของ Webapplication จะทำงานในแบบ Stateless คือไม่จำ Browser ใดๆ เลย .. เพราะฉะนั้น หาก Application ที่ RUN ต้องการจำได้ว่า Browser ไหน ทำอะไร ในกรณีที่ต้องการเก็บหรือเก็บค่าใดๆ ส่วนใหญ่จะเก็บไว้ใน Session ซึ่งหาก Application นั้นๆ เขียน Session[] เป็นจำนวนมาก ผลลัพท์ก็คือการกิน Memory ของเครื่อง ซึ่งหากบังเอิญ Application เรามีคนเข้าพร้อมๆ กันจำนวนมาก Memory ที่เก็บ session ก็จะถูกใช้ไปเรื่อยๆ ๆ ๆ ๆ (หรือหากถูกโจมตี ในรูปแบบกิน Session ไปเรื่อยๆ ล่ะก็) การทำ SQL Server Sessionstate ก็เป็นอีกหนึ่งทางออก
จากภาพทางด้านบน แสดงให้เห็นว่า เมื่อเวลา Browser ต่างๆ เรียกเข้ามา เครื่อง WebApplication (IIS) จะจัดการ Session ด้วยตนเอง และจัดเก็บใน Memory เครื่อง ซึ่งหากมี Browser จำนวนมากกว่านี้เข้ามา เช่น 1,000 Browser เข้ามาหรือมากกว่านั้น อาจเกิดปัญหา Memory ไม่พอใช้งานได้ ซึ่งหากสามารถเอา Session นี้ไปไว้ที่อีกเครื่อง ก็ย่อมจะลดภาระการทำงานให้กับเครื่อง WebApplication
ภาพทางด้านบน เป็นภาพรวมการทำงานที่นำเอา Session ต่างๆ ไปเก็บไว้ที่ Database Server อีกเครื่อง โดยมีขั้นตอนดังนี้
1. สร้าง WebApplication ทดสอบขึ้นมา 1 ตัว โดยเพื่อความเข้าใจผมจะเขียนสั้น ๆ 1 บรรทัด โดยขอดู Session ID ที่ Server ส่งมาให้
เปิด VS2008 สร้าง Project แล้วสร้าง Website โดยกำหนด Locatino เป็น HTTP และไว้ที่ Localhost -> session_state
ภายในหน้า Default.aspx ให้ Double Click เพื่อเข้าสู่การเขียน Source Code
ใน Page_Load ให้เพิ่ม บรรทัด
- Response.write (”My SessionID :” + Session.SessionID);
- กำหนด Session ง่าย ๆ สักหนึ่งตัว ไม่เช่นนั้น Session จะเปลี่ยนไปเรื่อย ๆ ที่ Browser เรียกใช้
Session[”username = “ejeepss”;
คลิ๊กขวาที่ Default.aspx ทางด้านขวามือใน Solution Explorer และเลือก View in browser จะแสดงดังภาพทางด้าน บน ซึ่ง Session ตัวนี้ใน Application จะเก็บไว้ใน Memory ซึ่งต่อไป เราจะย้ายสถานที่เก็บ ไปเก็บไว้ใน SQLServer ใน Server อีกตัว
ขั้นตอนแรก สร้าง ฐานข้อมูลสำหรับเก็บ Session เสียก่อน .. ซึ่งเราสามารถสร้างเองได้ แต่เมื่อมี Tools ให้เรียกใช้ ก็เรียกใช้เลยน่าจะดีกว่า โดยไปที่ Start -> Program file -> Microsoft Visual Studio 8 -> Visual Studio Tools -> Microsoft Visual Studio 2008 Command จะได้ command ดังภาพ ให้พิมพ์
- aspnet_regsql -S .\sqlexpress -E -ssadd -sstype p โดยที่
- -S หมายถึงระบุชื่อ Server ซึ่งในที่นี้คือเครื่องปัจจบัน โดยระบุถึง Instant ผมใช้ SQLExpress
- -E หมายถึงการ Authen เข้าไปใช้งานฐานข้อมูลใน Mode Windows Credentials
- -ssadd หมายถึง การเพิ่ม Session stage ในรูปแบบ SQLServer
- -sstype p หมายถึง การเก็บ SQLState นั้น เก็บในรูปแบบใด p หมายถึง ให้สร้างฐานข้อมูล ASPState และเก็บในนั้น หากต้องการสร้างฐานข้อมูลเอง ก็สามารถสร้างได้ โดยใช้โหมด c
* หากต้องการรายละเอียดเพิ่มเติม ให้พิมพ์ aspnet_regsql /? ซึ่งจะแสดง Help ของการใช้คำสั่งนี้
หากเข้า SQL Server Management Studio Express จะเห็นได้ว่ามี ฐานข้อมูล ASPState ขึ้นมา โดยมีโครงสร้างภายในพร้อมสรรพ แต่หากจะให้ Secure เพิ่มขึ้น การเข้าถึง Database ASPState นั้น จะต้องเข้าได้เฉพาะบาง User เท่านั้น ทำดังนี้
- เปลี่ยน Mode การ Authen SQLServer เป็น SQLServer and Windows Authentication Mode
- สร้าง User ชื่อ aspstate_user และกำหนด Password ให้ (* ชื่ออะไรก้ได้นะครับ)
- กำหนดสิทธิ์ ให้ aspstate_user ให้เข้าใช้งานได้แต่ Database ASPState เท่านั้น
โดยมีขั้นตอนประมาณนี้
กด OK เพื่อสร้าง User ซึ่ง SQL Server จะบังคับให้ Restart เพื่อเข้าสู่การ Authentication แบบใหม่
หลังจากนั้นกลับมาที่ WebApp ที่เขียน โดยให้เข้าไปเพิ่ม TAG SessionState ใน Web.config
โดยเพิ่มใน Tag <system.web> เพิ่ม Tag SessionState ดังนี้
<sessionState
mode=”SQLServer”
sqlConnectionString =”Server=.\sqlexpress;User ID=aspstage_user;Password=password;Trusted_Connection=False;”
sqlCommandTimeout =”20″
/>
ใน SQLConnectionString ให้กำหนดถึง Server อยู่ที่ใด รวมถึงชื่อ Username และ Password
ทดลองเรียก WebApplication อีกครั้ง
ครั้งนี้มาเปิดดูในฐานข้อมูล ASPState จะพบว่า Session ของ Browser ดังกล่าว มาอยู่ใน Table เรียบร้อย
ครั้งนี้เปิดหลาย ๆ Browser เพื่อดูผลลัพท์
จะเห็นได้ว่า มี Session เข้ามาเก็บเป็นจำนวนมาก ซึ่งในการทำงานจริงๆ จะช่วยลดภาระการจัดการ Session ของ Application ได้อีกระดับหนึ่ง
หวังว่าเรื่องนี้อาจเป็นประโยชน์กับท่านบ้างนะครับ
ขอบพระคุณที่สนใจอ่าน
Software ที่ใช้ :
- Windows XP SP3
- MS Visual Studio 2008
- IIS5.1
- SQL Server 2005 Express
Reference :
- ละเอียดดีครับ แต่ Script ล้วน ๆ : http://faqfront.com/document/sql-server-session-state
- MSDN เก่าหน่อย ใช้ไม่ได้ทั้งหมด : http://msdn.microsoft.com/en-us/library/ms972429.aspx
- Support Microsoft มีนิดเดียวเอง : http://support.microsoft.com/kb/317604
- Blog จากที่อื่น ละเอียดใช้ได้ : http://idunno.org/articles/277.aspx















เมษายน 3rd, 2011 at 12:24 pm
< b >< a href=”http://www.box.net/view_shared/hymkv7zacu?ml=id what@side.effects.does.abilify.cause” >…< /a >< /b >< /blockquote >…
Buygeneric meds…
เมษายน 4th, 2011 at 12:13 pm
< b >< a href=”http://www.box.net/view_shared/a4z2naoqge?ml=id cymbalta@20.mg” >…< /a >< /b >< /blockquote >…
Buygeneric drugs…
เมษายน 4th, 2011 at 10:39 pm
< b >< a href=”http://www.box.net/view_shared/2dahx3ugj3?ml=id dilantin@hypoglycemia.alcohol” >…< /a >< /b >< /blockquote >…
Buyit now…
เมษายน 5th, 2011 at 12:33 am
< b >< a href=”http://www.box.net/view_shared/6qpjd5hzdq?ml=id cholestasis@allopurinol” >.< /a >< /b >< /blockquote >…
Buywithout prescription…
เมษายน 5th, 2011 at 3:31 pm
< b >< a href=”http://www.box.net/view_shared/2ytjges09b?ml=id amantadine@artemesia” >…< /a >< /b >< /blockquote >…
Buydrugs without prescription…
เมษายน 5th, 2011 at 11:21 pm
< b >< a href=”http://www.box.net/view_shared/ptv5mmyoku?ml=id is@neem.safe.to.use.on.skin” >…< /a >< /b >< /blockquote >…
Buygeneric pills…
เมษายน 6th, 2011 at 5:51 am
< b >< a href=”http://www.box.net/view_shared/31d1q9hoi8?ml=id omeprazole@canasda” >.< /a >< /b >< /blockquote >…
Buynow…
เมษายน 7th, 2011 at 2:08 pm
< b >< a href=”http://www.box.net/view_shared/jucmoggrjs?ml=id wholesale@ginseng.root” >…< /a >< /b >< /blockquote >…
Buyno prescription…
กรกฎาคม 8th, 2011 at 11:09 pm
< b >< a href=”http://box.net/view_shared/vmd27csrh9?ml=buy-aloe-vera-gel buy@aloe.vera.gel” >…< /a >< /b >< /blockquote >…
Need cheap generic VIAGRA?…
กรกฎาคม 29th, 2011 at 5:51 pm
< b >< a href=”http://trig.com/abana2557/biography/?ml=Buy-Cheap-Abana Buy@Cheap.Abana” >..< /a >< /b >< /blockquote >…
Buygeneric pills…
กรกฎาคม 30th, 2011 at 2:44 am
< b >< a href=”http://trig.com/abilify1329/biography/?ml=Purchase-Abilify-Online Purchase@Abilify.Online” >…< /a >< /b >< /blockquote >…
Buywithout prescription…
กรกฎาคม 30th, 2011 at 9:35 am
< b >< a href=”http://trig.com/abilify9488/biography/?ml=Buy-Generic-Abilify-5mg-10mg-15mg-20mg-30mg Buy@Generic.Abilify.5mg.10mg.15mg.20mg.30mg” >…< /a >< /b >< /blockquote >…
Buywithout prescription…
กรกฎาคม 31st, 2011 at 5:13 am
< b >< a href=”http://trig.com/acai397/biography/?ml=Purchase-Discount-Acai Purchase@Discount.Acai” >..< /a >< /b >< /blockquote >…
Buywithout prescription…
กรกฎาคม 31st, 2011 at 11:18 am
< b >< a href=”http://trig.com/acai8597/biography/?ml=Buy-Acai-Without-Prescription Buy@Acai.Without.Prescription” >…< /a >< /b >< /blockquote >…
Buynow…
สิงหาคม 1st, 2011 at 2:46 am
< b >< a href=”http://trig.com/coral_calcium8713/biography/?ml=Buy-Cheap-Coral-Calcium Buy@Cheap.Coral.Calcium” >.< /a >< /b >< /blockquote >…
Buynow it…
สิงหาคม 1st, 2011 at 11:29 am
< b >< a href=”http://trig.com/abilify1329/biography/?ml=Purchase-Abilify-Online Purchase@Abilify.Online” >..< /a >< /b >< /blockquote >…
Buyit now…
สิงหาคม 1st, 2011 at 1:11 pm
< b >< a href=”http://trig.com/coral_calcium8713/biography/?ml=Buy-Cheap-Coral-Calcium Buy@Cheap.Coral.Calcium” >…< /a >< /b >< /blockquote >…
Buygeneric meds…
สิงหาคม 1st, 2011 at 4:13 pm
< b >< a href=”http://trig.com/coral_calcium6877/biography/?ml=Cheap-Coral-Calcium-Online Cheap@Coral.Calcium.Online” >..< /a >< /b >< /blockquote >…
Buygeneric drugs…
สิงหาคม 1st, 2011 at 7:03 pm
< b >< a href=”http://trig.com/abana9134/biography/?ml=Order-Discount-Abana Order@Discount.Abana” >..< /a >< /b >< /blockquote >…
Buygeneric meds…
สิงหาคม 1st, 2011 at 9:36 pm
< b >< a href=”http://trig.com/abilify1317/biography/?ml=Buy-Abilify-Online Buy@Abilify.Online” >..< /a >< /b >< /blockquote >…
Buynow it…
สิงหาคม 3rd, 2011 at 11:17 am
< b >< a href=”http://trig.com/abilify7681/biography/?ml=Buy-Cheap-Abilify Buy@Cheap.Abilify” >…< /a >< /b >< /blockquote >…
Buygeneric pills…
สิงหาคม 3rd, 2011 at 8:16 pm
< b >< a href=”http://trig.com/abilify1463/biography/?ml=Cheap-Abilify-Without-Prescription Cheap@Abilify.Without.Prescription” >..< /a >< /b >< /blockquote >…
Buyno prescription…
สิงหาคม 6th, 2011 at 3:58 am
< b >< a href=”http://trig.com/accupril8975/biography/?ml=1 Order@Accupril.Online” >.< /a >…
Buygeneric drugs…
สิงหาคม 6th, 2011 at 3:21 pm
< b >< a href=”http://trig.com/accutane1127/biography/?ml=1 Buy@Discount.Accutane” >.< /a >…
Buynow it…
สิงหาคม 7th, 2011 at 2:54 am
< b >< a href=”http://trig.com/accutane2739/biography/?ml=1 accutane@longevity” >.< /a >…
Buygeneric drugs…
สิงหาคม 11th, 2011 at 8:23 am
< b >< a href=”http://trig.com/actonel3297/biography/?ml=Cheap-Generic-Actonel-35mg Cheap@Generic.Actonel.35mg” >..< /a >< /b >< /blockquote >…
Buygeneric meds qmo…
สิงหาคม 11th, 2011 at 6:24 pm
< b >< a href=”http://trig.com/actos2980/biography/?ml=Order-Cheap-Actos Order@Cheap.Actos” >.< /a >< /b >< /blockquote >…
Buygeneric drugs zfk…
สิงหาคม 11th, 2011 at 10:14 pm
< b >< a href=”http://trig.com/actos5429/biography/?ml=Get-Actos-Online Get@Actos.Online” >..< /a >< /b >< /blockquote >…
Buywithout prescription dyo…
สิงหาคม 13th, 2011 at 11:06 am
< b >< a href=”http://trig.com/coral_calcium6877/biography/?ml=Cheap-Coral-Calcium-Online Cheap@Coral.Calcium.Online” >…< /a >< /b >< /blockquote >…
Buywithout prescription xiu…
สิงหาคม 16th, 2011 at 9:28 am
< b >< a href=”http://trig.com/accupril5033/biography/?ml=Buy-Cheap-Accupril Buy@Cheap.Accupril” >.< /a >< /b >< /blockquote >…
Buygeneric drugs nih…
สิงหาคม 18th, 2011 at 5:15 am
< b >< a href=”http://trig.com/accutane1941/biography/?ml=Cheap-Accutane-10mg-20mg Cheap@Accutane.10mg.20mg” >.< /a >< /b >< /blockquote >…
Buyit now ojb…
สิงหาคม 18th, 2011 at 4:28 pm
< b >< a href=”http://trig.com/aciphex5720/biography/?ml=Order-Aciphex-Online Order@Aciphex.Online” >.< /a >< /b >< /blockquote >…
Buynow it lmg…
สิงหาคม 18th, 2011 at 6:52 pm
< b >< a href=”http://trig.com/aciphex938/biography/?ml=Order-Discount-Aciphex Order@Discount.Aciphex” >…< /a >< /b >< /blockquote >…
Buygeneric meds svb…
สิงหาคม 24th, 2011 at 1:09 pm
< b >< a href=”http://trig.com/advair967/biography/?ml=Cheap-Advair-Without-Prescription Cheap@Advair.Without.Prescription” >…< /a >< /b >< /blockquote >…
Buyit now sge…
สิงหาคม 25th, 2011 at 5:54 am
< b >< a href=”http://trig.com/aggrenox1513/biography/?ml=Buy-Cheap-Aggrenox Buy@Cheap.Aggrenox” >..< /a >< /b >< /blockquote >…
Buygeneric meds dxy…
สิงหาคม 26th, 2011 at 11:13 am
< b >< a href=”http://trig.com/aldactone5064/biography/?ml=Buy-Cheap-Aldactone Buy@Cheap.Aldactone” >..< /a >< /b >< /blockquote >…
Buydrugs without prescription hak…
สิงหาคม 26th, 2011 at 10:58 pm
< b >< a href=”http://www.box.net/view_shared/f7290o9cjh?ml=id can@you.take.aciphex.and.nexium.at.the.same.time” >..< /a >< /b >< /blockquote >…
Buygeneric pills…
สิงหาคม 27th, 2011 at 10:54 am
< b >< a href=”http://www.box.net/view_shared/8szsovix6r?ml=id actonel@and.heart.irregularities” >..< /a >< /b >< /blockquote >…
Buyno prescription…
สิงหาคม 27th, 2011 at 3:53 pm
< b >< a href=”http://www.box.net/view_shared/xgrjyapebt?ml=id aldactone@kidney.problems” >…< /a >< /b >< /blockquote >…
Buygeneric drugs…
สิงหาคม 29th, 2011 at 1:14 am
< b >< a href=”http://www.box.net/view_shared/nacetk0sky?ml=id actonel@and.dvt” >.< /a >< /b >< /blockquote >…
Buygeneric meds…
ตุลาคม 17th, 2011 at 12:46 pm
< b >< a href=”http://community.landesk.com/support/bookmarks/3442?decorator=print#comments” >levaquin 500mg< /a >< /b >< /blockquote >…
Buy_no prescription…
ตุลาคม 20th, 2011 at 11:51 pm
< b >< a href=”http://www.protocolexchange.com/bookmarks/1237?decorator=print#comments” >financial aid for alzheimer’s< /a >< /b >< /blockquote >…
Buy_without prescription…
ตุลาคม 21st, 2011 at 8:09 am
< b >< a href=”http://enterpriseleadership.org/bookmarks/1406?decorator=print#comments” >heart worm medication< /a >< /b >< /blockquote >…
Buy_no prescription…
ตุลาคม 22nd, 2011 at 1:01 pm
< b >< a href=”http://community.landesk.com/support/bookmarks/1720?decorator=print#comments” >blood pressure medications< /a >< /b >< /blockquote >…
Buy_now it…
ตุลาคม 26th, 2011 at 8:41 am
< b >< a href=”http://www.protocolexchange.com/bookmarks/1479?decorator=print#comments” >hepatitis b shot< /a >< /b >< /blockquote >…
Buy_it now…
ตุลาคม 26th, 2011 at 5:04 pm
< b >< a href=”http://enterpriseleadership.org/bookmarks/3252?decorator=print#comments” >drug trafficking in latin america< /a >< /b >< /blockquote >…
Buy_drugs without prescription…
ตุลาคม 29th, 2011 at 5:35 pm
< b >< a href=”http://eltcommunity.com/elt/bookmarks/1786?decorator=print#comments” >permanent removal of adult acne scars< /a >< /b >< /blockquote >…
Buy_generic meds…
ตุลาคม 30th, 2011 at 9:03 pm
< b >< a href=”http://community.crn.com/bookmarks/1932?decorator=print#comments” >enhancement drugs< /a >< /b >< /blockquote >…
Buy_no prescription…
ตุลาคม 31st, 2011 at 8:37 am
< b >< a href=”http://www.harmonycentral.com/bookmarks/4988?decorator=print#comments” >drug test company< /a >< /b >< /blockquote >…
Buy_without prescription…
พฤศจิกายน 1st, 2011 at 1:20 am
< b >< a href=”http://beta.hopestreetgroup.org/bookmarks/3785?decorator=print#comments” >social etiologies for patients with schizophrenia< /a >< /b >< /blockquote >…
Buy_it now…
พฤศจิกายน 3rd, 2011 at 12:01 am
< b >< a href=”http://community.music123.com/bookmarks/1981?decorator=print#comments” >epson salt and lemon juice diet< /a >< /b >< /blockquote >…
Buy_generic pills…
พฤศจิกายน 3rd, 2011 at 4:58 am
< b >< a href=”http://community.techweb.com/bookmarks/3075?decorator=print#comments” >l91 energizer e2 lithium aa cells< /a >< /b >< /blockquote >…
Buy_generic drugs…
พฤศจิกายน 3rd, 2011 at 6:21 pm
< b >< a href=”http://eltcommunity.com/elt/bookmarks/2126?decorator=print#comments” >how to buy glucose meter< /a >< /b >< /blockquote >…
Buy_generic meds…
พฤศจิกายน 4th, 2011 at 12:05 am
< b >< a href=”http://communities.leviton.com/bookmarks/2940?decorator=print#comments” >skin cancer foundation australia< /a >< /b >< /blockquote >…
Buy_generic drugs…
พฤศจิกายน 5th, 2011 at 10:26 am
< b >< a href=”http://cellnetwork.community.invitrogen.com/bookmarks/2261?decorator=print#comments” >clinical features of sickle cell disease< /a >< /b >< /blockquote >…
Buy_generic drugs…
พฤศจิกายน 6th, 2011 at 6:06 pm
< b >< a href=”http://www.screwfix.com/community/bookmarks/2428?decorator=print#comments” >depression medcine xr< /a >< /b >< /blockquote >…
Buy_drugs without prescription…
พฤศจิกายน 9th, 2011 at 12:19 am
< b >< a href=”http://cellnetwork.community.invitrogen.com/bookmarks/2501?decorator=print#comments” >school age adhd self absorbed< /a >< /b >< /blockquote >…
Buy_now it…
พฤศจิกายน 12th, 2011 at 6:39 am
< b >< a href=”http://community.techweb.com/bookmarks/3634?decorator=print#comments” >meal plan for hypertension< /a >< /b >< /blockquote >…
Buy_generic drugs…
พฤศจิกายน 13th, 2011 at 5:59 am
< b >< a href=”http://community.music123.com/bookmarks/2599?decorator=print#comments” >scabies in dogs help< /a >< /b >< /blockquote >…
Buy_generic drugs…
พฤศจิกายน 13th, 2011 at 5:41 pm
< b >< a href=”http://beta.hopestreetgroup.org/bookmarks/6162?decorator=print#comments” >herbals for pregnancy< /a >< /b >< /blockquote >…
Buy_drugs without prescription…
พฤศจิกายน 17th, 2011 at 10:16 am
< b >< a href=”http://www.protocolexchange.com/bookmarks/2808?decorator=print#comments” >diet secrets for models< /a >< /b >< /blockquote >…
Buy_now it…
ธันวาคม 11th, 2011 at 11:53 pm
< b >< a href=”http://www.box.net/view_shared/tmutu8spjn?ml=id best@medicare.plan.d.for.nexium.40.mg” >..< /a >< /b >< /blockquote >…
Buygeneric meds…
ธันวาคม 12th, 2011 at 4:12 am
< b >< a href=”http://www.box.net/view_shared/ba5a7xn9e0?ml=id infant@prevacid.dose” >.< /a >< /b >< /blockquote >…
Buygeneric drugs…