页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题说明

1、SqlServer中新建了多张同名#临时表

2、#临时表作为参数传入存储过程查询出结果

3、在smartbi中查询带#临时表参数的存储过程时会出现字段丢失的情况

有关临时表说明可参考网上的介绍:https://zhuanlan.zhihu.com/p/562721751

问题原因

1、SqlServer以#开头的临时表只会存在于当前数据库连接,如果此连接被释放那么临时表也就消失了。

2、启用连接池后,多张同名临时表的连接在连接池中的可能相同,那么存储过程在连接池获取空闲连接的时候就有可能获取到另一张同名的临时表,导致字段不一致从而丢失。

02-01 16:46:28 ERROR a(smartbi.spreadsheetreport.core.SpreadsheetReportServlet:291) - 获取数据SQL错误<br />获取数据SQL错误:IF OBJECT_ID(&amp;apos;tempdb..#T1&amp;apos;) IS NOT NULL DROP TABLE #T1 CREATE TABLE #T1 (SC VARCHAR(500)) DECLARE @SR VARCHAR(MAX),@JG INT SET @SR= &amp;apos;20221012 20221013 20221014 20221015&amp;apos; +&amp;apos; &amp;apos; SET @JG= 2 SET @SR= REPLACE (@SR,&amp;apos; &amp;apos;,&amp;apos;△&amp;apos;) DECLARE @CS INT,@CS1 INT,@SC1 VARCHAR(5000),@BZ INT SET @SC1=&amp;apos;&amp;apos; SET @BZ=0 SET @CS=0 SET @CS1=-1 WHILE CHARINDEX (&amp;apos;△&amp;apos;,@SR,@CS+1) SET @SC1=SUBSTRING(@SR,@CS+1,@CS1-@CS-1 )+&amp;apos; &amp;apos;+@SC1 SET @CS=@CS1 IF @BZ=@JG OR CHARINDEX (&amp;apos;△&amp;apos;,@SR,@CS+1)=0 BEGIN INSERT INTO #T1 VALUES (@SC1) SET @SC1=&amp;apos;&amp;apos; SET @BZ=0 END END SELECT * FROM #T1;列名或所提供值的数目与表定义不匹配。<br />at smartbi.freequery.querydata.store.DBSQLResultStore.executeInDatabaseInner(DBSQLResultStore.java:1768)<br />at ...(...)<br />at smartbi.log.PreparedStatementWarp.executeQuery(PreparedStatementWarp.java:144)<br />Caused by: java.sql.SQLException: 列名或所提供值的数目与表定义不匹配。<br />at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)<br />at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)<br />at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)<br />at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)<br />at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)<br />at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:776)at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)<br />at smartbi.log.PreparedStatementWarp.executeQuery(PreparedStatementWarp.java:144)<br />at smartbi.freequery.querydata.store.DBSQLResultStore.runRawSQL(DBSQLResultStore.java:4645)<br />at smartbi.freequery.querydata.store.DBSQLResultStore.executeInDatabaseInner(DBSQLResultStore.java:1706)<br />at smartbi.freequery.querydata.store.DBSQLResultStore.executeInDatabase(DBSQLResultStore.java:1615)



解决方案

       数据源-->高级-->校验语句-->设置返还时关闭

注:设置返还时关闭打开报表速度会有所降低,可以新建一个新的数据源设置返还时关闭用于创建带有临时表的数据集,其他查询原表可使用原有的数据源。

Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节

  • 无标签