verify-readonly.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. SET NOCOUNT ON;
  2. DECLARE @RequiredObjects TABLE(ObjectName sysname, ObjectType varchar(2));
  3. INSERT @RequiredObjects(ObjectName,ObjectType) VALUES
  4. (N'dbo.XiaoshuSyncCommandLog',N'U'),
  5. (N'dbo.XiaoshuSyncChangeLog',N'U'),
  6. (N'dbo.XiaoshuSync_ExecuteCommand',N'P'),
  7. (N'dbo.XiaoshuSync_ZL_User_Changes',N'TR'),
  8. (N'dbo.XiaoshuSync_ZL_Node_Changes',N'TR'),
  9. (N'dbo.XiaoshuSync_ZL_CommonModel_Changes',N'TR'),
  10. (N'dbo.XiaoshuSync_ZL_C_kcbd_Changes',N'TR'),
  11. (N'dbo.XiaoshuSync_ZL_C_order_Changes',N'TR'),
  12. (N'dbo.XiaoshuSync_ZL_C_skjl_Changes',N'TR'),
  13. (N'dbo.XiaoshuSync_ZL_C_ss_Changes',N'TR'),
  14. (N'dbo.XiaoshuSync_ZL_C_lxjl_Changes',N'TR'),
  15. (N'dbo.XiaoshuSync_ZL_C_gywjl_Changes',N'TR'),
  16. (N'dbo.XiaoshuSync_ZL_C_cpda_Changes',N'TR'),
  17. (N'dbo.XiaoshuSync_ZL_C_ck_Changes',N'TR'),
  18. (N'dbo.XiaoshuSync_ZL_C_Article_Changes',N'TR');
  19. IF EXISTS (
  20. SELECT 1 FROM @RequiredObjects required
  21. WHERE OBJECT_ID(required.ObjectName,required.ObjectType) IS NULL
  22. )
  23. BEGIN
  24. SELECT required.ObjectName,required.ObjectType
  25. FROM @RequiredObjects required
  26. WHERE OBJECT_ID(required.ObjectName,required.ObjectType) IS NULL;
  27. THROW 51010,N'同步桥数据库对象安装不完整,请先执行 install.sql',1;
  28. END;
  29. SELECT
  30. required.ObjectName,
  31. required.ObjectType,
  32. CAST(1 AS bit) AS Installed
  33. FROM @RequiredObjects required
  34. ORDER BY required.ObjectType,required.ObjectName;
  35. SELECT Dataset,COUNT_BIG(*) AS PendingChangeCount,MAX(Id) AS Watermark,MAX(ChangedAt) AS LatestChangeAt
  36. FROM dbo.XiaoshuSyncChangeLog
  37. GROUP BY Dataset
  38. ORDER BY Dataset;
  39. SELECT N'users' AS Dataset,COUNT_BIG(*) AS ActiveCount FROM dbo.ZL_User
  40. UNION ALL SELECT N'nodes',COUNT_BIG(*) FROM dbo.ZL_Node
  41. UNION ALL SELECT N'course-bindings',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=58 AND COALESCE(Status,99)<>-2
  42. UNION ALL SELECT N'appointments',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=54 AND COALESCE(Status,99)<>-2
  43. UNION ALL SELECT N'lessons',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=59 AND COALESCE(Status,99)<>-2
  44. UNION ALL SELECT N'learning-records',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=56 AND COALESCE(Status,99)<>-2
  45. UNION ALL SELECT N'practice-records',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=53 AND COALESCE(Status,99)<>-2
  46. UNION ALL SELECT N'memory-records',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=60 AND COALESCE(Status,99)<>-2
  47. UNION ALL SELECT N'assessments',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=61 AND COALESCE(Status,99)<>-2
  48. UNION ALL SELECT N'vocabulary',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=52 AND COALESCE(Status,99)<>-2
  49. UNION ALL SELECT N'special-training',COUNT_BIG(*) FROM dbo.ZL_CommonModel WHERE ModelID=2 AND NodeID=3 AND COALESCE(Status,99)<>-2
  50. ORDER BY Dataset;
  51. SELECT
  52. CAST(CASE WHEN OBJECT_DEFINITION(OBJECT_ID(N'dbo.XiaoshuSync_ExecuteCommand')) LIKE N'%51001%尚未与旧站业务逻辑绑定%'
  53. THEN 1 ELSE 0 END AS bit) AS WritesFailClosed,
  54. N'WritesFailClosed=1 表示当前仅允许只读同步;未绑定正式 BLL 前不得在新云函数启用写桥。' AS Explanation;