Sql Simba Mongo ODBC驱动程序:返回的数据与预期数据长度不匹配
我们正在使用Simba Mongo ODBC驱动程序连接Mongo数据库并进行sql查询。我使用isql在Linux上测试了连接,并且能够执行查询 当我的客户端试图通过Microsoft SQL Server Management Studio连接到Mongo时,他收到以下错误:Sql Simba Mongo ODBC驱动程序:返回的数据与预期数据长度不匹配,sql,mongodb,odbc,ssms,Sql,Mongodb,Odbc,Ssms,我们正在使用Simba Mongo ODBC驱动程序连接Mongo数据库并进行sql查询。我使用isql在Linux上测试了连接,并且能够执行查询 当我的客户端试图通过Microsoft SQL Server Management Studio连接到Mongo时,他收到以下错误: OLE DB provider 'MSDASQL' for linked server 'mongo' returned data that does not match expected data length fo
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.
我从未使用过这个应用程序。你知道我在哪里可以控制预期的数据长度吗?链接服务器对元数据和返回的数据非常挑剔,一般来说,如果定义的元数据与使用它与使用其他应用程序时的预期不完全匹配,则更可能遇到问题 在这种情况下,您正在检索定义了字符串列的数据。字符串列中的数据长度为290,但驱动程序报告的长度为255。这是因为MongoDB不返回任何特定字段长度的元数据,因为它是一个无模式的数据源。驱动程序使用默认值来报告字符串列的长度,默认值设置为255。您可以通过打开DSN的“配置”对话框,转到“高级选项”,并将标准字符串列长度从255更改为更大的值(如512)来更改此设置。这将允许链接服务器正常运行,除非您的数据超过512字节,在这种情况下,您只需将其调整为更大的适当值。我找到了这个答案:解决此问题的一种方法是构造SQL语句,例如:
declare @myStmt varchar(max)
set @myStmt = 'select * from my_collection'
EXECUTE (@myStmt) AT MongoDB_PROD_mydb
我自己也在链接的SQLite服务器上尝试过,但奇怪的是,在较长的条目上,文本会被随机删除。我还没有弄明白这一部分-它可能与我正在使用的SQLiteODBC驱动程序有关
但“预期数据长度”的错误得到了处理
迈克尔谢谢。它确实解决了“返回的数据与预期数据长度不匹配”错误的问题。但现在我有另一个错误消息“请求的转换不受支持”。我想这是另一个主题。嗨,塔玛拉,如果你直接联系solutions@simba.com,他们应该能够帮助你快速解决任何其他问题,包括你看到的新问题。请注意,链接服务器在通过ODBC数据源时有8000个字符的限制,如果您的数据超过该限制,则必须重新构造查询以解决该问题。