在偏移量:0 处获得 TDS 响应中的意外值
Posted
技术标签:
【中文标题】在偏移量:0 处获得 TDS 响应中的意外值【英文标题】:got unexpected value in TDS response at offset:0 【发布时间】:2013-09-27 12:23:25 【问题描述】:我正在使用 JDBC 驱动程序版本 1.2.2828.100 和 Database Sql Server 2008 R2。
我正在通过连接三个包含 1,40,000 行的表来进行搜索操作
SELECT USERID, USERLOGIN, DOMAIN FROM USER (nolock), USER01 (nolock), DOMAIN (nolock) WHERE USERLASTNAME= "aa" AND USERFIRSTNAME = "bb" AND USERDOMAINID = DOMAINID AND USERID = USER01ID ORDER BY USERID
我收到以下错误,我的应用程序立即崩溃
com.microsoft.sqlserver.jdbc.TDSReader throwInvalidTDS 严重:TDSReader@d5ccfa (ConnectionID:11 TransactionID:0x0000000000000000) 在偏移量:0 处的 TDS 响应中获得了意外值
偏移量:0 处的 TDS 响应指的是什么? 如何解决?
【问题讨论】:
【参考方案1】:好的,TDS 是表格数据流。这是客户端(机器)与数据库(服务器)对话的方式。您正在使用 microsoft jdbc 驱动程序。
这里有一些改进代码和解决问题的方法。
1 - 请使用 ANSI 20xx 标准。
这意味着查询将被重写如下。
-- Updated using newer syntax
SELECT
U0.USERID,
U0.USERLOGIN,
D0.DOMAIN
FROM
USER as U0 with (nolock) INNER JOIN
USER01 as U1 with (nolock) ON U0.USERID = U1.USER01ID INNER JOIN
DOMAIN as D0 with (nolock) U0.USERDOMAINID = D0.DOMAINID
WHERE
U0.USERLASTNAME= "aa" AND
U0.USERFIRSTNAME = "bb"
ORDER BY
U0.USERID
我不提倡 (nolock) 但那是一场完全不同的战斗。
2 - 接下来看这篇文章。用户发现类型案例导致了问题。确保数据类型与 JAVA 兼容。http://adrielservice.com/blog/?p=362
我希望这会有所帮助。
约翰
【讨论】:
谢谢约翰。我已经更改了我的查询,并且我还交叉检查了类型案例。问题仍然存在。当我尝试多次执行相同的查询时说(一分钟 3 到 5 次)我得到这个错误。打算换个驱动检查一下。 只是一个想法,但如果它仍然存在于您的 Office 版本中,请尝试通过 MS Query 运行查询。您可以使用本机客户端驱动程序或 ODBC。使用上面的查询。如果它有效,那肯定是驱动程序 2 Java 问题。祝你好运 我重新阅读了您的回复。因此,您每分钟执行 3 到 5 次查询。这是一个单一的过程吗?您是否针对阻塞或死锁发出警报?我想知道您是否遇到并发问题。设置 IO 统计和 TIME。查询需要多长时间?您是否使用了良好的查询计划。如果驱动程序升级不能解决问题,请调查一些事情。以上是关于在偏移量:0 处获得 TDS 响应中的意外值的主要内容,如果未能解决你的问题,请参考以下文章
preg_grep():编译失败:在偏移量 0 处没有可重复的内容