51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3725|回复: 3
打印 上一主题 下一主题

[原创] 【急】QC数据库迁移后,无法登录

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-26 16:54:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原先QC9.2安装在WINDOWS SERVER 2000 和SQL SERVER 2000平台上,现在想迁移到WINDOWS SERVER 2003和SQL SERVER 2005平台。操作步骤如下:
1.安装WINDOWS SERVER 2003和SQL SERVER 2005.
2.安装QC9.2和中文补丁。
3.备份老平台上的数据库,并还原到新的平台上。
4.COPY 老平台下的D:\Program Files\Mercury\Quality Center\repository目录下的所有目录和文件到新的平台下。

用管理员权限登录,报错如下:
iled to Login;
Failed to check authentication of user 'admin';
Cannot build directory item for key '[qcsiteadmin_db@jdbc:mercury:sqlserver://zhiliangkz:1433(td)]' in SA Global Struct Dir;
Failed to fill table struct for table ADMIN in database qcsiteadmin_db@jdbc:mercury:sqlserver://zhiliangkz:1433(td);
Failed to determine structure of table 'ADMIN';
[Mercury][SQLServer JDBC Driver][SQLServer]对象名  'ADMIN' 无效。;

Stack Trace:
java.sql.SQLException: [Mercury][SQLServer JDBC Driver][SQLServer]对象名  'ADMIN' 无效。
at com.mercury.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.mercury.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.mercury.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.mercury.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.mercury.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.mercury.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.mercury.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.mercury.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.mercury.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.mercury.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.mercury.jdbc.base.BaseStatement.executeQuery(Unknown Source)
at com.mercury.optane.core.db.CDatabaseFieldsInfo.fillStructArray(CDatabaseFieldsInfo.java:302)
        wrapped in com.mercury.optane.core.db.CTdDbException: Failed to determine structure of table 'ADMIN'
at com.mercury.optane.core.db.CDatabaseFieldsInfo.fillStructArray(CDatabaseFieldsInfo.java:325)
at com.mercury.optane.core.db.CDatabaseFieldsInfo.obtainInfo(CDatabaseFieldsInfo.java:131)
        wrapped in com.mercury.optane.core.CTdException: Failed to fill table struct for table ADMIN in database qcsiteadmin_db@jdbc:mercury:sqlserver://zhiliangkz:1433(td)
at com.mercury.optane.core.db.CDatabaseFieldsInfo.obtainInfo(CDatabaseFieldsInfo.java:134)
at com.mercury.optane.core.db.CDatabaseFieldsInfo.<init>(CDatabaseFieldsInfo.java:67)
at com.mercury.optane.core.db.CAbsTablesStructDirectory.createDirectoryItem(CAbsTablesStructDirectory.java:44)
at com.mercury.optane.core.directory.CAbsDirectory.getDirectoryItem(CAbsDirectory.java:80)
        wrapped in com.mercury.optane.core.CTdException: Cannot build directory item for key '[qcsiteadmin_db@jdbc:mercury:sqlserver://zhiliangkz:1433(td)]' in SA Global Struct Dir
at com.mercury.optane.core.directory.CAbsDirectory.getDirectoryItem(CAbsDirectory.java:86)
at com.mercury.optane.core.db.CAbsTablesStructDirectory.getDatabaseFieldsInfo(CAbsTablesStructDirectory.java:27)
at com.mercury.td.saserver.sautil.CSaDbSchemaProperties.getDatabaseFieldsInfo(CSaDbSchemaProperties.java:114)
at com.mercury.optane.core.db.CAbsDBContext.isComparisonCaseSensitive(CAbsDBContext.java:178)
at com.mercury.optane.core.db.utils.CDbGeneralFunctions.dbLowerComparison(CDbGeneralFunctions.java:530)
at com.mercury.td.saserver.sautil.CSaServerGeneralFunctions.saDbLowerComparison(CSaServerGeneralFunctions.java:428)
at com.mercury.td.saserver.api.logics.CTdUserLogic.authenticateUserAgainstTdDB(CTdUserLogic.java:1121)
        wrapped in com.mercury.optane.core.CTdException: Failed to check authentication of user 'admin'
at com.mercury.td.saserver.api.logics.CTdUserLogic.authenticateUserAgainstTdDB(CTdUserLogic.java:1145)
at com.mercury.td.saserver.api.logics.CTdUserLogic.checkUserPassword(CTdUserLogic.java:1062)
at com.mercury.td.saserver.api.logics.CSessionLogic.login(CSessionLogic.java:188)
at com.mercury.td.saserver.requests.Login.execute(Login.java:37)
at com.mercury.optane.core.web.RequestsDispatcher.execute(RequestsDispatcher.java:87)
        wrapped in com.mercury.optane.core.CTdException: Failed to Login
at com.mercury.optane.core.web.RequestsDispatcher.execute(RequestsDispatcher.java:93)
at com.mercury.optane.core.web.CAbsServlet.executeFunction(CAbsServlet.java:548)
at com.mercury.optane.core.web.CAbsServlet.processRequest(CAbsServlet.java:540)
at com.mercury.optane.core.web.CAbsServlet.doPost(CAbsServlet.java:423)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:481)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)

其中,参考过论坛里的“qc服务器ip地址变了,无法打开”帖子,但是地址直接用机器名字访问,不是用ip地址。
哪位高手帮忙指点一下,很急呀!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-7-26 17:42:37 | 只看该作者
在SQL SERVER 中运行:
1。sp_change_users_login 'report'
2。sp_addlogin 'admin'
3。sp_change_users_login 'update_one','TD','admin'
把数据库的用户名与登录名的关联了,但是,结果还是一样的!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-7-27 13:08:21 | 只看该作者
找到原因了:
QC的qcsiteadmin_db数据库在WINDOWS SERVER 2003和SQL SERVER 2005平台上的表结构,跟在WINDOWS SERVER 2000 和SQL SERVER 2000平台上不一样。
少了一个表,还有几张表的少了字段!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-7-29 14:47:47 | 只看该作者
这个问题基本搞定,不用强制还原,对应新旧表结构的不同,在新结构的基础上,把老结构的数据导入。
其中,新结构已有的数据保持不变。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 02:52 , Processed in 0.074514 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表