2011-05-31 76 views
4

我已經獲得了從第三方進度數據庫獲取某些數據的任務。問題是,有些表格報告錯誤「表<table>中的列<column>的值超出了其最大長度或精度(7864)」。使用sql-width進行ODBC問題(DBTool?)

一些谷歌搜索想出了這是數據庫的SQL寬度問題,運行DBTool可以解決這個問題。 http://progress.atgnow.com/esprogress/jsp/AnswerControls.jsp?directSolutionLink=1&tabs=true&docPropValue=p24496

問題是,管理進度數據庫的第三方不想知道 - 他們說它可能會損壞數據庫。由於我對任何事情都不甚瞭解(尤其是進步),所以我無法反駁他們的論點。

要提問:

  • 他們有對 有效的參數不運行這個工具?
  • 如果他們 保持其位置,我有我的 任何其他選項?請記住,我不知道關於Progress的第一件事情。

回答

2

你的第三方是無知的。 DBTool是處理這個問題的標準方法,並且已經爲此目的提供了。運行dbtool非常常見,通常會自動偶爾運行(每月通常很好)。

他們可能會混淆它與「dbrpr」。哪些可以重新格式化塊和其他有趣的東西,如果使用不當,肯定會給你帶來麻煩。

你幾乎肯定可以自己運行它,無論是否合作。所有你需要的是dba用戶名和密碼。我可能是錯的,但98%的時間dba userid是「sysprogress」,它很可能在ODBC連接中使用。如果你一直在設置這些,你可能知道密碼(或者可以很容易地獲得它)。

(如果他們不會運行dbtool,那麼他們可能還沒有運行UPDATE STATISTICS,這可能意味着性能非常糟糕,Progress SQL引擎使用基於成本的優化器,並且沒有一些統計數據來提供它但是這是另一個問題的教訓)

+1

您得到寬度錯誤的原因是Progress db將所有數據存儲爲可變長度。 4gl會樂於填滿任何領域。 (因此,如果您的第三方也是應用程序提供商,則可以讓他們選擇修復代碼以遵守限制...) 所有dbtool都會掃描數據庫以獲取填充過多的字段,然後將max-width屬性更新爲適應任何例外情況(它增加了一個欺騙因素,這樣你就不必經常運行它) – 2011-05-31 21:09:24

+0

Thanks @tom!我現在可以放心地回過頭來辯論這個案子,如果他們不「玩球」,我可以自己去看看。 – CYMR0 2011-06-01 06:09:42

+0

我處於完全相同的情況。 @TomBascom你知道我怎麼能得到客戶端(SQuirreL在我的情況下)至少報告失敗的列的值與此錯誤? – 2014-09-29 14:48:05