Simba Mongo ODBC-Treiber: gab data zurück, die nicht der erwarteten datalänge entsprechen

Wir verwenden den Simba Mongo ODBC-Treiber, um eine Verbindung zur Mongo-database herzustellen und SQL-Abfragen auszuführen. Ich habe die Verbindung unter Linux mit isql getestet und konnte Abfragen durchführen.

Als mein Client versuchte, sich über Microsoft SQL server Management Studio mit Mongo zu verbinden, wurde der folgende Fehler angezeigt:

OLE DB provider 'MSDASQL' for linked server 'mongo' returned data that does not match expected data length for column '[MSDASQL].contributorComposite__0__biographicalNote'. The (maximum) expected data length is 255, while the returned data length is 290. 

Ich habe nie mit dieser Anwendung gearbeitet. Haben Sie eine Idee, wo ich die erwartete datalänge kontrollieren kann?

Solutions Collecting From Web of "Simba Mongo ODBC-Treiber: gab data zurück, die nicht der erwarteten datalänge entsprechen"

Der Linked server ist sehr wählerisch in Bezug auf Metadaten und die zurückgegebenen data. Im Allgemeinen treten Probleme eher auf, wenn Ihre definierten Metadaten nicht genau mit den Erwartungen übereinstimmen, die bei der Verwendung anderer Anwendungen erwartet werden.

In diesem Fall werden data mit einer definierten characterfolgespalte abgerufen. Die data in der Stringspalte haben eine Länge von 290, der Treiber meldet jedoch eine Länge von 255. Dies liegt daran, dass MongoDB keine Metadaten zur Länge eines bestimmten Feldes zurückgibt, da es sich um eine datenschemafreie dataquelle handelt. Der Treiber verwendet stattdessen einen Standardwert für die Länge von characterfolgenspalten, der standardmäßig auf 255 festgelegt ist. Sie können dies ändern, indem Sie den configurationsdialog für den DSN öffnen, zu den erweiterten Optionen gehen und die Spaltenlänge der Standardzeichenfolge von 255 in ändern etwas größer, wie 512. Dies sollte Linked server ermöglichen, sich ordnungsgemäß zu verhalten, außer wenn Ihre data 512 Bytes überschreiten. In diesem Fall sollten Sie dies einfach auf einen größeren geeigneten Wert einstellen.