以前曾经写了一篇《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)。
四,恢复数据库。分别使用备份的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'