非常奇怪的SQL Server行为:自动将大多数varchar数据类型转换为文本

时间:2016-09-15 13:23:31

标签: sql-server

我正在开发一个新的SQL Server数据库:

JDBC:SQLSERVER:// [主机]:[端口];的databaseName = WSO2AM_STATS_DB

我使用DDL(非常接近https://raw.githubusercontent.com/wso2/product-apim/e745561c1948ffcd225fea8cffedd6b00fbd4f27/modules/distribution/resources/stat/sql/mssql.sql)来创建应用服务器工作所需的所有表。奇怪的是,在几分钟之后,有时是10分钟,有时是几小时,以随机的方式,大多数列在DDL中设计为varchar数据类型,最初显示在Microsoft SQL Server Management Studio或Squirrel SQL客户端中如varchar,则自动转为text数据类型。

我正在研究这个并试图找出原因,例如:是否有一些触发器导致了这种奇怪的行为?这是我们的开发/测试,因为这样的错误现在已经在我们的应用服务器日志中全部结束了:

TID[-1234] AppID[publisher] [AM] [2016-09-14 16:47:52,765] ERROR {JAGGERY.modules.statistics.usage:jag} -   

org.wso2.carbon.apimgt.usage.client.exception.APIMgtUsageQueryServiceClientException: ***Error occurred while querying from JDBC databaseThe text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.*** 

我们花了一些时间来找出错误被抛出的原因,因为我们的DDL对于任何列都没有text数据类型,正如您从上面提到的SQL文件中可以看出的那样。

顺便说一句,我从Microsoft SQL Server Management Studio或Squirrel SQL客户端运行相同的DDL,行为相同,因此它与我们使用的工具无关。

0 个答案:

没有答案