DB数据库的数据不能同步到Warehouse数据仓库
问题原因:
远程登录到服务器,开始->管理工具->计算机管理->事件查看器->Windows日志->应用程序,打开错误信息,错误提示参考文档。
查看文档,我们这么一句看到应修整名称“SysImpManagement_ImplyIssue_SupportConfirmtime ”开头或结尾的空白。
SysImpManagement_ImplyIssue_SupportConfirmtime是实施问题流程的一个字段,我们看到字段后面有一个空格,通过查看数据库,此字段添加的时间为2013-10-17 上午11点左右,Warehouse中2013-10-17上午9点的数据已经同步,在在17号11点之后的数据都没有同步进来,因此我们将问题定位在这个空格上。
解决方案:
确定问题字段
(1) 实施流程在DefaultCollection项目集合上有部署。首先,我们使用查看在这个数据库下的Fields表的这个字段:
select *
from Tfs_DefaultCollection.dbo.Fields a
where a.Name='S_实施支撑确认时间';
查看ReferenceName字段的值,确实包含一个空格;
(2) 用UE打开实施问题流程,查看'S_实施支撑确认时间'字段,发现其引用名为refname="SysImpManagement.ImplyIssue.SupportConfirmtime
",可以看到出现了乱码‘
’,即空格。我们查看其他字段是否含有空格,因为系统有时报的错误并不全面,发现还有‘S_实施支撑分析时间’和‘S_实施支撑分析者’的引用名后面有乱码;
创建新字段代替旧字段
(3) 保存此文件,命名为“实施问题原字段流程.xml”,令复制一份,命名为“实施问题中间流程.xml”;
(4) 在“实施问题中间流程.xml”中重新定义三个字段来代替'S_实施支撑确认时间'、‘S_实施支撑分析时间’和‘S_实施支撑分析者’,注意按照原命名规则进行定义,不要发生冲突,将所有用到'S_实施支撑确认时间'、‘S_实施支撑分析时间’和‘S_实施支撑分析者’的地方全部替换为新定义的字段,注意不要删除原字段;
(5) 将“实施问题中间流程.xml”更新到DefaultCollection项目集合下的项目中;
(6) 新建查询,保证列选项中有'S_实施支撑确认时间'、‘S_实施支撑分析时间’、‘S_实施支撑分析者’和新定义的三个字段,保存查询;
(7) 将查询结果在Excel中打开,将'S_实施支撑确认时间'、‘S_实施支撑分析时间’和‘S_实施支撑分析者’的值拷贝到对应的新添加的字段中,发布;
删除旧字段
(8) 拷贝一份“实施问题中间流程.xml”,命名为“实施问题新字段流程.xml”,将'S_实施支撑确认时间'、‘S_实施支撑分析时间’和‘S_实施支撑分析者’的定义删除,保存;
(9) 将“实施问题新字段流程.xml”更新到服务器;
从数据库中删除字段
(10) 在DefaultCollection数据库中按一下方式删除字段:
select * from Tfs_DefaultCollection.dbo.Fields a where a.Name='S_实施支撑确认时间';--FldID=10206
delete from Tfs_DefaultCollection.dbo.Fields where FldID=10206;
delete from Tfs_DefaultCollection.dbo.FieldUsages where FldID=10206;
delete from Tfs_DefaultCollection.dbo.WorkItemTypeUsages where FieldID=10206;
由于Fields是主表,所以删除时需先执行下面两条语句。
(11) 在Warehouse数据库中按一下方式删除字段:
select * from Tfs_Warehouse.dbo._WitFields a where a.FieldId=10206 and a.DisplayName='S_实施支撑确认时间';--SK=38203
delete from Tfs_Warehouse.dbo._WitFields where SK=38203;
(12) 按照(10)和(11)的方法删除‘S_实施支撑分析时间’和‘S_实施支撑分析者’字段。