如何修改流程資料庫中使用者帳號的Domain

注意: 以下方法建議用於測試資料庫, 使用於正式資料庫需注意其中的風險

感謝Gemtek 的 Fred 提供相關指令.

AgilePoint Server 系統中所有的資料都是存在流程資料庫中, 若測試主機與正式主機兩者採用相同的帳號, 則只需將正式機的資料庫複製至測試機上則可以模擬相同的流程情境, 必要時可將測試機採用Form 認證, 並設定為測試模式(只輸帳號不輸密碼) 則很容易的模擬流程中各角色簽核情形.

 

但若測試機與正式機兩者網域不同時則需修改使用者帳號中的domain, 過去我有寫過一段SQL 作為Update 相關Table 的domain , 不過因為是用取出字串重新組合的方式, 有一個很大的缺點是得算出新舊帳號的長度, 然後取substring()再組合, 自己也覺得不是很方便, 因此只留著自己用.

update  WF_REG_USERS

set USER_NAME = 'APDEV02'+substring(user_name,12,20),

  USER_NAME_UPCASE = 'APDEV02'+substring(user_name_upcase,12,20)

where User_Name like 'vpc-ap-main%'

今天由另一個客戶某科技大廠的同仁 Fred, 手中看看一個不錯寫法, 用Replace 的方式來寫, 只需將舊的Domain Replace 成新的Domain , 因此徵得他的同意提供給大家參考.

--AgilePoint 預設的流程資料庫

update WF_EVENTS set SENDER=replace(SENDER,'PORTAL','PORTAL-TEST')
update WF_MANUAL_WORKITEMS set LAST_MODIFIED_BY=replace(LAST_MODIFIED_BY,'PORTAL','PORTAL-TEST'),USER_ID=replace(USER_ID,'PORTAL','PORTAL-TEST'),ORIGINAL_USER_ID=replace(ORIGINAL_USER_ID,'PORTAL','PORTAL-TEST'),CLIENT_DATA=replace(cast(CLIENT_DATA as nvarchar(4000)),'PORTAL','PORTAL-TEST')

 

--以下這個指令要小心使用, 因為ATTR_XML  很有可能超過4000個字元

update WF_CUSTOM_ATTRS set ATTR_XML=replace(cast(ATTR_XML as nvarchar(4000)),'PORTAL','PORTAL-TEST')

update WF_ASSIGNED_OBJECTS set ASSIGNEE=replace(ASSIGNEE,'PORTAL','PORTAL-TEST'),CREATED_BY=replace(CREATED_BY,'PORTAL','PORTAL-TEST')

update WF_AUDIT_TRAILS set PERFORMER=replace(PERFORMER,'PORTAL','PORTAL-TEST')

update WF_DELEGATIONS set FROM_USER=replace(FROM_USER,'PORTAL','PORTAL-TEST'),TO_USER=replace(TO_USER,'PORTAL','PORTAL-TEST'),CREATED_BY=replace(CREATED_BY,'PORTAL','PORTAL-TEST'),LAST_UPDATED_BY=replace(LAST_UPDATED_BY,'PORTAL','PORTAL-TEST'),CANCELLED_BY=replace(CANCELLED_BY,'PORTAL','PORTAL-TEST')

update WF_PROC_DEFS set OWNER=replace(OWNER,'PORTAL','PORTAL-TEST'),CREATED_BY=replace(CREATED_BY,'PORTAL','PORTAL-TEST')

update WF_PROC_INSTS set PROC_INITIATOR=replace(PROC_INITIATOR,'PORTAL','PORTAL-TEST')

update WF_PROC_TRACKINGS set SENDER=replace(SENDER,'PORTAL','PORTAL-TEST')

update WF_REG_USERS set USER_NAME_UPCASE=replace(USER_NAME_UPCASE,'PORTAL','PORTAL-TEST'),USER_NAME=replace(USER_NAME,'PORTAL','PORTAL-TEST') where USER_NAME<>'NT AUTHORITY\SYSTEM'

update WF_ROLES set CREATED_BY=replace(CREATED_BY,'PORTAL','PORTAL-TEST'),LAST_MODIFIED_BY=replace(LAST_MODIFIED_BY,'PORTAL','PORTAL-TEST')

--AresPortal 擴充資料庫

update AF_DELEGATIONS_DETAIL set TO_USER=replace(TO_USER,'PORTAL','PORTAL-TEST'),CREATEUSER=replace(CREATEUSER,'PORTAL','PORTAL-TEST')

update AF_DELEGATIONS_INFO set FROM_USER=replace(FROM_USER,'PORTAL','PORTAL-TEST'),CREATEUSER=replace(CREATEUSER,'PORTAL','PORTAL-TEST'),UPDATEUSER=replace(UPDATEUSER,'PORTAL','PORTAL-TEST')

update AF_DEP_INFO set DEP_MANAGER_NAME=replace(DEP_MANAGER_NAME,'PORTAL','PORTAL-TEST'),DEP_DETAIL=replace(cast(DEP_DETAIL as nvarchar(4000)),'PORTAL','PORTAL-TEST')

update AF_DEP_USER set USER_NAME=replace(USER_NAME,'PORTAL','PORTAL-TEST')

update AF_PROGS set OWNER=replace(OWNER,'PORTAL','PORTAL-TEST')
update AF_PROGS_CATALOG set OWNER=replace(OWNER,'PORTAL','PORTAL-TEST')
update AF_USER_INFO set USER_NAME=replace(USER_NAME,'PORTAL','PORTAL-TEST')


update  AF_PORTAL_CONTROL set USER_NAME=replace(USER_NAME,'PORTAL','PORTAL-TEST')

update AF_SIGN_DATA set PROVIDER=replace(PROVIDER,'PORTAL','PORTAL-TEST')
update AF_UPLOAD_FILE set PROVIDER=replace(PROVIDER,'PORTAL','PORTAL-TEST')

留言

這個網誌中的熱門文章

如何使用SQL Profiler 找到語法錯誤

如何將SQL Server 的查詢輸出寫入文字檔

AgilePoint逐級簽核與指定簽核層級範圍