ภาพรวม
Sitecore ใช้ TempDB ใน SQL Server เพื่อเร่ง Session State Operations ปัญหา: TempDB ถูกสร้างใหม่ทุกครั้งที่ SQL Server Service Restart ทำให้ต้องสร้าง Table Structure และ User Permissions ใหม่ใน TempDB ทุกครั้ง
Script สร้าง Table Structure และ Stored Procedures สำหรับ TempDB อยู่ที่: Sitecore 8.1 rev. xxxxxx\Databases\Scripts\Sessions db performance boost.sql
File นี้สร้าง Stored Procedure ใน Master DB ที่สร้าง Table/Index ใน TempDB แต่ ไม่ตั้ง Permissions ให้ Access ได้
Solution: T-SQL Script Reinitialize TempDB
สร้าง Script Reinitialize Table/Index Structure และ Recreate User ด้วย Permissions ถูกต้อง (สมมติรัน Sessions db performance boost.sql แล้ว)
EXEC [master].[dbo].[Sitecore_InitializeSessionState] -- สร้าง Tables/Indexes ใน TempDB
USE [tempdb]
IF NOT EXISTS (SELECT name FROM sys.database_principals WHERE name = 'cdsAccount')
BEGIN
CREATE USER [cdsAccount] FOR LOGIN [sql1\cdsaccount] -- สร้าง DB User ใน TempDB
ALTER ROLE [db_datareader] ADD MEMBER [cdsAccount] -- Data Reader Role
ALTER ROLE [db_datawriter] ADD MEMBER [cdsAccount] -- Data Writer Role
END
Script นี้: 1) Exec SP Reinitialize Structure 2) Check User cdsAccount 3) ถ้าไม่มี สร้าง User และ Grant db_datareader/db_datawriter Roles
การ Apply เมื่อ Service Restart
สร้าง SQL Agent Job รันเมื่อ SQL Server Agent Startup ได้ Package .sql Script สร้าง Job ให้แล้ว (README ใน Repository มีรายละเอียดการเปลี่ยน Database User)
สรุป
TempDB Optimization ช่วย Sitecore Session State Performance แตต้องจัดการ Reinitialization หลัง SQL Server Restart SQL Agent Job แบบ Startup แก้ปัญหานี้ได้อัตโนมัติ