发新话题
打印

[已解决] cq用户数据库能更名吗?( 此文章被查看:356次,被回复:6篇!! )

本主题由 yunshan 于 2008-4-8 10:52 关闭

回复 5# 的帖子

错误的原因是这样的:
这些UPDATE语句是针对有状态记录类型的,每个UPDATE语句对应一个记录类型,需要根据你自己的情况来修改这些语句。



© 本文为 yunshanSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

cq用户数据库能更名吗?

CQ创建的用户数据库,都用了一断时间了,还能更改库名吗?》
如果可以更改该怎么操作?谢谢大家

注,我用的数据库是SQL SERVER。

[ 本帖最后由 ckk6566 于 2008-4-7 11:39 编辑 ]


问题已经解决 [打开主题]
本主题的最佳答案为 [ 7 楼].



© 本文为 ckk6566SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

CQ中的数据库的名称分为物理数据库名称(phisycal database name)和逻辑数据库名称(logical database name).

理论上说都是可以改的,前提是必须先备份好数据库。
1. 对于物理数据库名称
在SQL Server中更改数据库名称,然后到CQ Designer中数据库>更新数据库属性,重新连接数据库

2. 对于逻辑数据库名称
可以参考下面的解决方案-Changing the logical name of a ClearQuest user database.
http://blogs.onresolve.com/?p=11



© 本文为 yunshanSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

我想改的是逻辑数据库的名称,我看了看,是要在SQL里来执行语句改吗?

© 本文为 ckk6566 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

回复 板凳 的帖子

是的,该逻辑数据库的名称有很大的风险的,一定要先备份。

逻辑数据库的名称关系到所有的记录的ID信息,所以要通过SQL来更新,可以尝试着去做。

© 本文为 yunshan 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

报错了,说:对象名dbglobal无效。

提供代码如下,执行后,发现红色部分的对象名都无效,就是说我的数据库里没这些表。
UPDATE dbglobal SET site_name = 'Ros'  
      
-- Create the SQL needed to perform the update of stateful entities.   
SELECT DISTINCT  
    'UPDATE ' + e.db_name + ' ' +   
    'SET id = ''' + db.site_name + ''' + RIGHT(id, 8) ' +   
    'WHERE dbid <> 0 AND ' +   
    'LEFT(id, ' + CAST(LEN(db.site_name) AS VARCHAR) +   
    ') <> ''' + db.site_name + ''''        
FROM  
    entitydef e   
INNER JOIN  
    history h ON  
        h.entitydef_id = e.id   
INNER JOIN  
    dbglobal db ON  
        db.site_name IS NOT NULL  
WHERE  
    e.type = 1   
  
-- This will return a set of lines like the ones below for each stateful record   
-- you have.  You can just run these statements directly.   
UPDATE ancillary_change SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE app_deployment_record SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE application_change SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE application_release SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE application_test_record SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE change_acceptance_record SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE deployment_record_t SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE release_schedule SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE solution_review SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE task SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';   
UPDATE test_record SET id = 'Ros' + RIGHT(id, 8) WHERE dbid <> 0 AND LEFT(id, 5) <> 'Ros';  


[ 本帖最后由 ckk6566 于 2008-4-7 15:09 编辑 ]

© 本文为 ckk6566 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

问题解决了,非常感谢Yunshan的帮忙!
上面的SQL语句只是修改了记录的ID号,登陆时候显示的数据库名没有被修改。
如果要修改需要在MASTER数据库中的master_dbs里更改你需要改的那个数据库的登陆名,我使用的是直接在表里更改,更改前请注意把该数据库进行好备份,更改同时保证该库没有被使用。
更改完成,直接启用客户端,数据库登陆名已经被改成了新的名字。

另外,登陆后会发现新提交的记录ID都是新库的名字,历史的记录是老库的ID,为了保证统一,可以把历史记录的ID也修改,修改方法:
打开用户数据库中记录类型对应的表,比如我们提交的记录是“Defect”类型,那么打开名为“DEFECT”那张表,把该表里的历史记录的ID更改即可,我使用的是直接更改,建议可以使用SQL语句完成修改。


最佳答案
该回答被楼主/管理员列为正解!
本帖最近评分记录
  • yunshan 威望 +2 感谢分享! 2008-4-8 10:51
  • yunshan 金钱 +10 感谢分享! 2008-4-8 10:51

© 本文为 ckk6566 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题