หลังจากที่ฉันเขียนว่า "เลือกระหว่าง SQL Server Express Edition และ Compact Edition" เพื่อนบางคนในสวนถามว่า SQL Server Compact Edition (sqlce) รองรับ ASP.NET หรือไม่ ตอนนั้นฉันไม่แน่ใจ ฉันทดสอบด้วยตัวเองแล้ว แต่มันไม่ได้ผล แต่ฉันคิดว่ามันแปลกและไม่มีเหตุผลที่จะไม่สนับสนุน!
วันนี้ฉันอ่านบล็อกของ Steve Lasker และในที่สุดก็เข้าใจ!
เนื่องจาก sqlce ไม่รองรับ ASP.NET ตามค่าเริ่มต้น ผู้ใช้จำนวนมากจึงส่งคำขอไปยัง MS, บ่นอยู่ตลอดเวลา และถึงกับถูกข่มขู่ (ถ้าคุณไม่ปล่อยให้มันรองรับ ฉันจะใช้ผลิตภัณฑ์ XX) ในที่สุด Steve Lasker ก็ไม่สามารถนั่งนิ่งได้และออกมาชี้แจงทั้งหมดนี้
ในความเป็นจริง การวางตำแหน่งทางการตลาดของ sqlce มีความชัดเจนมาก โดยหลักๆ แล้วมีไว้เพื่อแก้ปัญหาการจัดเก็บข้อมูลออฟไลน์และการซิงโครไนซ์ของไคลเอ็นต์อัจฉริยะ มีการอธิบายไว้ใน "การเลือกระหว่าง SQL Server Express Edition และ Compact Edition" ดังนั้น Microsoft จึงไม่ปรับสถานการณ์การใช้งาน sqlce เป็นฐานข้อมูลเว็บไซต์ให้เหมาะสม ในสภาพแวดล้อมที่มีผู้ใช้หลายคนเข้าถึงเว็บไซต์และข้อมูลพร้อมกัน ประสิทธิภาพของ sqlce นั้นไม่เหมาะและไม่สามารถเปรียบเทียบกับ SQL Server Express ได้ ดังนั้นจึงขอแนะนำให้เว็บไซต์ยังคงใช้ฐานข้อมูล SQL Server Express หรือ SQL Server คุณต้องรู้ว่า sqlce เป็นเครื่องมือฐานข้อมูลแบบฝัง และ SQL Server Express เป็นบริการฐานข้อมูล ขณะนี้ Hosting Toolkit SQL Server เพิ่งเปิดตัวโดยทีมพัฒนา SQL Server สามารถช่วยคุณในการปรับใช้ SQL Server Express บนเว็บเซิร์ฟเวอร์ของคุณได้
ดังนั้น ASP.NET สามารถใช้ sqlce เป็นที่จัดเก็บข้อมูลได้หรือไม่? สามารถ!
ตามค่าเริ่มต้น sqlce จะถูกบล็อกเมื่อเปิดการเชื่อมต่อฐานข้อมูล sqlce ในกระบวนการของผู้ปฏิบัติงาน ASP.NET คุณสามารถลบข้อจำกัดนี้ได้ด้วยโค้ดต่อไปนี้ บรรทัดโค้ดนี้จะเปลี่ยนไปในเวอร์ชัน RTM เนื่องจาก sqlce ถูกเปลี่ยนชื่อและไม่ได้เรียกว่า SQL Server Everywhere อีกต่อไป:
AppDomain.CurrentDomain.SetData("SQLServerEverywhereUnderWebHosting", true)
ควรสังเกตว่าฟังก์ชันการซิงโครไนซ์ข้อมูลของ sqlce ไม่สามารถใช้ใน ASP.NET ได้
กล่าวโดยย่อ ไม่ว่ารองเท้าจะใหญ่แค่ไหน เท้าจะใหญ่แค่ไหน คุณไม่ควรใช้ sqlce ใน ASP.NET หากคุณยืนกรานที่จะใช้มัน โปรดใส่ใจกับผลที่ตามมา!
การอ้างอิง:
SQL Server Compact Edition ภายใต้ ASP.net และ IIS
คลาส SqlCeConnection (System.Data.SqlServerCe)