2015年3月14日 星期六

[Cognos] Create SQL 時遇到 Error,錯誤代號 UDA-SQL-0107

    通常來說,在撰寫 Cognos SQL Report 時,SQL 一定是先在其他 SQL 開發環境,例如SQL*Plus,先編輯好並且測試無誤,才會複製到 Cognos SQL Report 中。因此,在 Cognos 開發報表時,最不容易犯錯的地方,就是建立 SQL 物件,偏偏這次就遇到了 ....



    這次遇到的錯誤訊息,落落長,但秉持 Cognos 一貫路線,就是讓人看不懂。

    透過 Google 大神,雖然以 UDA-SQL-0107當作 Key Word,可以查到不少的說明,但我怎麼看,怎麼測,就是無法排除 ....

    不過,就像我說的,SQL 都已經事先測試過了,絕對不會是語法的問題。而 Cognos SQL 物件的屬性沒有幾個,也絕對沒有設錯,所以顯然不是開發的時候有哪邊弄錯。

    不知道是不是跟我有一點點 DBA 經驗有關,在覺得SQL不可能錯的情況下,馬上聯想到的是 Database 權限的問題。

    寫一個簡單的 Cognos 報表,以顯示目前連線的 User Name,SQL 如下:
    SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') USER_NAME FROM DUAL

    Bingo! 跟我猜的一樣,Cognos Server 設定 DB 連線的 DB User,跟我平常用的不一樣。把 Select 權限 Grant 給 Cognos Server 上設定的 User,問題就解決了。

    以下是我遇到的 Cognos 完整錯誤訊息

UDA-SQL-0107 A general exception has occurred during the operation "prepare".
RSV-SRV-0042 Trace back:
RSReportService.cpp(752): UDASQLException: CCL_CAUGHT: RSReportService::process()
RSReportServiceMethod.cpp(263): UDASQLException: CCL_RETHROW: RSReportServiceMethod::process(): asynchRunSpecification_Request
RSASyncExecutionThread.cpp(808): UDASQLException: RSASyncExecutionThread::checkException
RSASyncExecutionThread.cpp(260): UDASQLException: CCL_CAUGHT: RSASyncExecutionThread::runImpl(): asynchRunSpecification_Request
RSASyncExecutionThread.cpp(864): UDASQLException: CCL_RETHROW: RSASyncExecutionThread::processCommand(): asynchRunSpecification_Request
RSQueryMgr.cpp(1569): UDASQLException: CCL_RETHROW: RSQueryMgr::executeRsapiCommand
QFSSession.cpp(1147): UDASQLException: CCL_RETHROW: QFSSession::ProcessDoRequest()
QFSSession.cpp(1145): UDASQLException: CCL_CAUGHT: QFSSession::ProcessDoRequest()
QFSSession.cpp(1102): UDASQLException: CCL_RETHROW: QFSSession::ProcessDoRequest()
QFSConnection.cpp(1971): UDASQLException: CCL_RETHROW: QFSConnection::DescribeDataSourceQuery
QFSQuery.cpp(569): UDASQLException: CCL_RETHROW: QFSQuery::DescribeDataSourceQuery
QFSQuery.cpp(569): UDASQLException: CCL_RETHROW: QFSQuery::DescribeDataSourceQuery
Source/AQE_UDAFacade.cpp(1704): UDASQLException: CCL_RETHROW:
apidyn.cpp(250): UDASQLException: CCL_RETHROW: sqlPrepareWithOptions

沒有留言: