Migrate DB from MsSql to Sqlite
Ingo edited this page May 12, 2022
·
3 revisions
The Page describes the steps to migrate an existing YAF.NET Database (v3.x.x) from MS SQL to Sqlite.
- Upgrade first to the latest version of YAF.NET
- Download the Converter from https://github.com/w8tcha/mssql2sqlite/releases
- Convert the db
- create the missing views
-- yaf_vaccess source
CREATE VIEW yaf_vaccess as select a.UserID,x_1.ForumID,MAX(b.Flags & 1) AS IsAdmin,MAX(b.Flags & 2) AS IsGuest,MAX(b.Flags & 8) AS IsForumModerator,(SELECT COUNT(1) AS Expr1 FROM yaf_UserGroup AS v INNER JOIN yaf_Group AS w ON v.GroupID = w.GroupID CROSS JOIN yaf_ForumAccess AS x CROSS JOIN yaf_AccessMask AS y WHERE(v.UserID = a.UserID) AND(x.GroupID = w.GroupID) AND(y.AccessMaskID = x.AccessMaskID) AND(y.Flags & 64 <> 0)) AS IsModerator,MAX(x_1.ReadAccess) AS ReadAccess,MAX(x_1.PostAccess) AS PostAccess,MAX(x_1.ReplyAccess) AS ReplyAccess,MAX(x_1.PriorityAccess) AS PriorityAccess,MAX(x_1.PollAccess) AS PollAccess,MAX(x_1.VoteAccess) AS VoteAccess,MAX(x_1.ModeratorAccess) AS ModeratorAccess,MAX(x_1.EditAccess) AS EditAccess,MAX(x_1.DeleteAccess) AS DeleteAccess,MAX(x_1.UploadAccess) AS UploadAccess,MAX(x_1.DownloadAccess) AS DownloadAccess FROM yaf_vaccessfull x_1 INNER JOIN yaf_UserGroup AS a ON a.UserID = x_1.UserID INNER JOIN yaf_Group AS b ON b.GroupID = a.GroupID GROUP BY a.UserID, x_1.ForumID;
-- yaf_vaccess_group source
CREATE VIEW yaf_vaccess_group as select e.BoardID,b.UserID,c.ForumID,d.AccessMaskID,b.GroupID,d.Flags & 1 AS ReadAccess,d.Flags & 2 AS PostAccess,d.Flags & 4 AS ReplyAccess,d.Flags & 8 AS PriorityAccess,d.Flags & 16 AS PollAccess,d.Flags & 32 AS VoteAccess,d.Flags & 64 AS ModeratorAccess,d.Flags & 128 AS EditAccess,d.Flags & 256 AS DeleteAccess,d.Flags & 512 AS UploadAccess,d.Flags & 1024 AS DownloadAccess,e.Flags & 1 AS AdminGroup from yaf_UserGroup AS b INNER JOIN yaf_ForumAccess AS c on c.GroupID=b.GroupID INNER JOIN yaf_AccessMask AS d on d.AccessMaskID=c.AccessMaskID INNER JOIN yaf_Group AS e on e.GroupID=b.GroupID;
-- yaf_vaccess_null source
CREATE VIEW yaf_vaccess_null as select a.UserID,0 AS ForumID,0 AS ReadAccess,0 AS PostAccess,0 AS ReplyAccess,0 AS PriorityAccess,0 AS PollAccess,0 AS VoteAccess,0 AS ModeratorAccess,0 AS EditAccess,0 AS DeleteAccess,0 AS UploadAccess,0 AS DownloadAccess,0 AS AdminGroup from "yaf_User" AS a;
-- yaf_vaccess_user source
CREATE VIEW yaf_vaccess_user as select b.UserID,b.ForumID,c.AccessMaskID,c.Flags & 1 AS ReadAccess,c.Flags & 2 AS PostAccess,c.Flags & 4 AS ReplyAccess,c.Flags & 8 AS PriorityAccess,c.Flags & 16 AS PollAccess,c.Flags & 32 AS VoteAccess,c.Flags & 64 AS ModeratorAccess,c.Flags & 128 AS EditAccess,c.Flags & 256 AS DeleteAccess,c.Flags & 512 AS UploadAccess,c.Flags & 1024 AS DownloadAccess from yaf_UserForum AS b INNER JOIN yaf_AccessMask AS c on c.AccessMaskID=b.AccessMaskID;
-- yaf_vaccessfull source
CREATE VIEW yaf_vaccessfull as select b.UserID,b.ForumID,c.Flags & 1 AS ReadAccess, c.Flags & 2 AS PostAccess,c.Flags & 4 AS ReplyAccess,c.Flags & 8 AS PriorityAccess,c.Flags & 16 AS PollAccess,c.Flags & 32 AS VoteAccess,c.Flags & 64 AS ModeratorAccess,c.Flags & 128 AS EditAccess,c.Flags & 256 AS DeleteAccess,c.Flags & 512 AS UploadAccess,c.Flags & 1024 AS DownloadAccess,0 AS AdminGroup FROM yaf_UserForum AS b INNER JOIN yaf_AccessMask AS c ON c.AccessMaskID = b.AccessMaskID UNION ALL SELECT b.UserID,c.ForumID,d.Flags & 1 AS ReadAccess,d.Flags & 2 AS PostAccess,d.Flags & 4 AS ReplyAccess,d.Flags & 8 AS PriorityAccess,d.Flags & 16 AS PollAccess,d.Flags & 32 AS VoteAccess,d.Flags & 64 AS ModeratorAccess,d.Flags & 128 AS EditAccess,d.Flags & 256 AS DeleteAccess,d.Flags & 512 AS UploadAccess,d.Flags & 1024 AS DownloadAccess,e.Flags & 1 AS AdminGroup FROM yaf_UserGroup AS b INNER JOIN yaf_ForumAccess AS c ON c.GroupID = b.GroupID INNER JOIN yaf_AccessMask AS d ON d.AccessMaskID = c.AccessMaskID INNER JOIN yaf_Group e ON e.GroupID = b.GroupID UNION ALL SELECT UserID,0 AS ForumID,0 AS ReadAccess,0 AS PostAccess,0 AS ReplyAccess,0 AS PriorityAccess,0 AS PollAccess,0 AS VoteAccess,0 AS ModeratorAccess,0 AS EditAccess,0 AS DeleteAccess, 0 AS UploadAccess,0 AS DownloadAccess,0 AS AdminGroup FROM "yaf_User" AS a;
- Download the sqlite upgrade package...
- Update the connection string in the web.config (db.config)
YetAnotherForum.NET (YAF) the Open Source Discussion Forum for ASP.NET - https://YetAnotherForum.NET
Copyright © YetAnotherForum.NET & Ingo Herbote. All rights reserved