Kann nicht Holen Sie sich eine Reihe von OLE DB-provider "MSDASQL" für den Verbindungsserver "Fortschritt"
Ich versuche, wählen Sie einige Daten aus einer Progress-Datenbank mit einem openquery auf SQL Server 2008 R2, aber ich bin immer diese Fehlermeldung.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "progress" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "progress".
Ich habe einige tests und entdeckt, dass ich das problem auf eine spezifische Spalte ist eine Spalte des Datentyps varchar. Die Spalte ist etwa 30 Spalten, für Sie das wählen funktioniert.
Dies ist meine Abfrage:
SELECT * from openquery(progress, 'select DescricaoProduto from MP.pub.IMPproduto')
Habe ich versucht zu tun, einige andere wählt, aber keiner von Ihnen arbeitete. Zum Beispiel:
SELECT * from openquery(progress, 'select Cast(DescricaoProduto as char(100)) as DescricaoProduto from MP.pub.IMPproduto')
Jede Idee, was zu tun ist?
InformationsquelleAutor Deise Vicentin | 2013-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fortschritt Daten alle variabler Länge. Fortschritte Anwendungen routinemäßig "über-Zeug" - Felder. SQL-tools oft Objekt. Die Fortschritte, die db unterhält eine SQL-WIDTH-Attribut, das aktualisiert werden kann mit der "dbtool" Dienstprogramm zur Verfügung gestellt von Fortschritt. Wenn Sie wollen, ziehen Sie Daten aus einer Progress-Datenbank Sie muss verwenden Sie dieses Werkzeug regelmäßig.
http://knowledgebase.progress.com/articles/Article/P24496?q=how+to+use+dbtool+to+modify+sql-width&l=en_US&c=Product_Group%3AOpenEdge&fs=Search&pn=1
Den einfachen Weg zu beginnen ist PROENV (gefunden in der OpenEdge-Programm-Gruppe) und dann "dbtool dbname", und wählen Sie option 2.
Oder Sie können verwenden Sie die folgende SQL:
ALTER TABLE ALTER COLUMN SET PRO_SQL_WIDTH ;
wenn Sie wissen, welche Tabelle & Spalte das problem verursacht, und Sie brauchen nicht, um alles Scannen.
InformationsquelleAutor Tom Bascom
Einen anderen Weg um das problem zu umgehen ist die Verwendung von SUBSTRING, etwa so:
So, wenn die Spalte definiert ist als 30 Zeichen, und die Spalte enthält 50, substring(col, 1,50) tatsächlich abgerufen werden alle 50 Zeichen.
InformationsquelleAutor Emiel Odijk