以前曾经写了一篇《http://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

四,恢复数据库。分别使用备份的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'
View Code

相关文章: