以前曾经写了一篇《How to remove replication in Sytelinehttp://www.cnblogs.com/insus/archive/2011/12/20/2294831.html  过于简单。 由于SyteLine采用共享License的授技术,如果你从一个正式的数据库复制一个备份,恢复至另外一个站点上,这样它们会有很多数据共享。为了杜绝数据混淆,我需要做的是移除Replication功能。

说简单一些吧,如果你在正式版的SyteLine数据有些问题,或是你想测试一些功能,但你又不想在正式版来操作。这样你会想到创建一个测试的系统如Pilot。正常的情况之下,备份与恢复即可,但是SyteLine ERP是采用Intranet License的。也就是说恢复之后,Pilot的数据与正式版的数据库还是有关联的。在Pilot做测试或是更新,它会更新至正式版的数据库去。因此我们需要移除复制(Replication)。

一,分别备份Live数据库,包括App,Forms,Objects三个数据库。

二,进入UT服务器,打开Services.msc,停止SyteLine服务(IDO service)。
How to remove replication in SyteLine V2-LMLPHP

四,恢复数据库。分别使用备份的bak文件来恢复Pilot site的App, Forms & Objects)数据库。

以下步骤是在恢复数据库进行或是相关,与原ERP和原数据库无关!!!

五,登录Pilot数据库,查询[intranet]表,然后更新[MasterSite]为NULL。

SELECT * FROM [intranet]
UPDATE [intranet] SET [MasterSite] = NULL WHERE [intranet_name] = '???' 

六,查询[rep_rule]表

SELECT * FROM [rep_rule]

并删除所有此表[rep_rule]记录:

DELETE FROM [rep_rule]  

七,查询表[site]

SELECT * FROM [site]

删除[site]记录,仅留:

DELETE FROM [site] WHERE [site] <> '???' 

更新[IntranetLicensing]为0。

UPDATE [site] SET [IntranetLicensing] = 0 WHERE [site]= '???'

八,查询[site_group]表:

SELECT * FROM [site_group]

删除所有此表[site_group]记录,仅保留当前site的site_group数据:

DELETE FROM [site_group] WHERE [site_group] <> '???' 

九,查询表[IntranetSharedTable]:

SELECT * FROM [dbo].[IntranetSharedTable]

删除所有此表[IntranetSharedTable]记录:

DELETE FROM [dbo].[IntranetSharedTable]

十,在SQL的查询分析器中,执行下面configuration,把TRUSTWORTHY值改为sa,

USE <Restored Database Name>
ALTER DATABASE <Restored Database Name>
SET TRUSTWORTHY ON
EXEC sp_changedbowner 'sa'

然后更新sa的SyteLine的密码,由于密码是加密的,你需要使用加密后的字符串,先来查询一下[UserNames]

SELECT *  FROM [UserNames]

下面Insus.NET把sa的密码设为空,由于SL_Internal的密码就是空的,因此我们就用它的加密后的字符串:

UPDATE [UserNames] SET [UserPassword]='287C0C4DB105827AC41D11555D199265966ECF1FC527B37B6740FF6491427E54EA80' WHERE [UserId] = 2 

How to remove replication in SyteLine V2-LMLPHP

十一,登录UT服务器,Restart SyteLine IDO service。

十二,setup object Metadata。
How to remove replication in SyteLine V2-LMLPHP

十三,Discard IDO Cache in configuration manager:
根据IDO Runtime on local machine 选项 ,选与不选各执行一次。
How to remove replication in SyteLine V2-LMLPHP

十四,Restart SyteLine IDO service。

十五,在UT服务器,运行与登录SyteLine:
打开intranets form,检查master site 字段是否为空。为空说明正确。
How to remove replication in SyteLine V2-LMLPHP

十六,打开sites/Entities form, 填写正确的DataBase Name和Forms DataBase Name,并保存。

How to remove replication in SyteLine V2-LMLPHP

十七,打开site groups form 是存有记录,记录是否正确。

How to remove replication in SyteLine V2-LMLPHP

十八,打开Replication Management from检查 Intranet Shared Tables,点击时,它会出现警示,点OK确认, 然后按F4检查记录是否全为空。为空正确。

How to remove replication in SyteLine V2-LMLPHP

How to remove replication in SyteLine V2-LMLPHP

十九,在相同的Replication Management from中, 检查 replication Rules 是否存在记录,点击时,它会出现警示,点OK确认, 然后按F4检查记录是否全为空,如果是空记录那就对了。

How to remove replication in SyteLine V2-LMLPHP

How to remove replication in SyteLine V2-LMLPHP

二十,在相同的Replication Management from中, 点击 "Reqenerate Replication Triggers" 铵钮,确认"Replication Triggers Regenerated Successfully"信息。
How to remove replication in SyteLine V2-LMLPHP

二十一,打开Update_All Tables form,按F4 过滤所有记录,点击"Select All" 按钮,把 "Disable Replication" 选项选中,最后点击“Repopulate Tables” 铵钮。此步有可能花费相当长时间,视你的数据多少来决定。
How to remove replication in SyteLine V2-LMLPHP

How to remove replication in SyteLine V2-LMLPHP

How to remove replication in SyteLine V2-LMLPHP

How to remove replication in SyteLine V2-LMLPHP

二十二,打印报表,看看是否正常打印。

二十三,完成。

04-26 19:27